这是一个例子:
#include <stdio.h>
#include <stdlib.h>
fun(int porra[])
{
porra[0]=-1;
}
int main()
{
int vec[1];
vec[0]=0;
fun(vec);
printf("%d",vec[0]);
system("PAUSE");
return 0;
}
它应该打印-1而不是0吗? 如果是这样,有没有办法将数组复制到函数而不用数组运行 for ?
最佳答案
C 中没有按值传递数组的 native 方法,因为当它们作为参数传递时,它们会“衰减”到指向其第一个元素的指针。
但是有一个技巧:声明一个包含数组的结构。结构体是按值传递的,包括数组,如果您想到这一点,这很奇怪(当我学习 C 时,这不起作用,因为结构体不能作为函数参数)。毕竟,结构很像数组,只是元素具有不同的类型。
(例如代码,请参阅上面 alk 的答案,他更快。)
关于c - 如何将数组传递给函数而不在函数外部更改它?(数组不是全局的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30005740/