c - 如何在函数中使用数组指针?

标签 c arrays pointers

我必须编写一个程序,该程序具有一个函数,可以对数组中的所有正数求和,但使用函数参数数组作为指针。当我尝试调用 sum 函数时,main 函数出现问题。这是我的源代码:

#include <stdio.h>
#include <conio.h>
int posit(int *x[], int n){
  int s=0;
  for(int i=0; i<n; i++){
    if(*x[i]>0){
      s=s+*x[i];
    }
  }
  return s;
}
int main(){
  int k;
  scanf("%d",&k);
  int a[k];
  for(int i=0; i<k; i++){
    scanf("%d",&a[i]);
  }
  int b=posit(&a,k);
  printf("%d\n", b);
  getch();
  return 0;
}

最佳答案

当一个数组被传递给一个函数时,它会衰减到一个指向它的第一个元素的指针。将函数的签名更改为:

int posit(int* x, int n){ /* Equivalent to 'int posit(int x[], int n)' */

并将函数中数组的元素访问语法从 *x[i] 更改为 x[i]。调用函数:

int b=posit(a,k);

还有一点值得一提的是查看scanf()的返回值,它返回所做的赋值次数,以确保 &a[i] 确实被赋值并且程序随后没有使用未初始化的变量。

您可能会找到 Arrays and Pointers C FAQ 部分很有用。

关于c - 如何在函数中使用数组指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13395337/

相关文章:

c - c中其他宏串联内的宏串联

c - 拆分/解析并从 char 数组中获取值

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

c - 应用于字符串数组指针的逻辑

c - 如果您的指针变得垃圾,如何制作 if 语句

objective-c - 将 NSData 字节转换为 NSString

c - 尝试执行 1 -(双数)的非法指令

python - 在 python2.7 中从单行输入读取整数数组的内存有效方法

python - python numpy数组操作+=线程安全吗?

arrays - 在 C 中初始化了一个指针数组 - 可能无法初始化可变大小的对象