我试过类似的东西:
typedef struct vec{
int sz;
int v[];
} ff;
int sum(struct vec z){
int o=0,i;
for(i=0;i<z.sz;i++)
o+=z.v[i];
return o;
}
int main(){
int test[]={10,1,2,3,4,5,6,7,8,9,10};
return sum((struct vec)test);
}
但是这个示例代码无法编译。如何按值(不是引用抛出指针)将数组发送给函数?
最佳答案
在 C 中不能按值发送数组。每次尝试将数组传递给函数时,都会将指针传递给第一个值。
要按值传递数组,您可以稍微作弊并将其封装在一个结构中,然后按值发送它(这样它就会被复制)...这是一个肮脏的 hack,as explained here ,但是好吧,如果你真的想要它,它会起作用。
另一种方法是使用给定的指针在函数内部复制数组。
关于c - 如何按值发送数组以在c中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21969095/