求和函数的有趣字符输出(ΦwÅΩw)

问题描述 投票:0回答:1

我的输出有个有趣的字符(ΦwcrazyΩw),我能知道代码出了什么问题吗?可能int main是错误的我必须使用int sumArray(int * a,int len,int * sum)format

#include <stdio.h>
#include <stdlib.h>

int sumArray(int *a, int len, int *sum) {
  int sum1 = 0;
  if (a == NULL || sum == NULL)
    return -1;
  int i;
  (*sum) = 0;
  for (i = 0; i < len; i++) {
    (*sum) += a[i];
  }

  return 0;
}

int main() {
  int *a = {1, 2, 3, 4};
  int *b;

  sumArray(&a, 4, &b);
  printf(b);
  return 0;
}
c arrays pointers
1个回答
0
投票

您可以尝试这些更改吗?

 #include <stdio.h>
 #include <stdlib.h>

    int sumArray(int *a, int len, int *sum) {
      // int sum1 = 0;  // i removed this variable because you are not using it 
      if (a == NULL || sum == NULL)
        return -1;
      int i;
      (*sum) = 0;
      for (i = 0; i < len; i++) {
        (*sum) += a[i];
      }

      return 0;
    }

int main() {
  //int *a = {1, 2, 3, 4};
  int a[] = {1,2,3,4};
  int b;
 //i rather declare an integer instead of a pointer to an integer
 // when you declared int * b , this was a pointer, and your printf(b) was printing an address, not the value calculated by sumArray
 // that is why you were printing funny characters 

  sumArray(a, 4, &b);
 //a is already a pointer 

  printf("%d",b);
  return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.