好久没有写 C 代码, 居然有点生疏了, 刚刚弄错了一个简单的问题, 特发此处以自警.
将一组参数传入函数中, 这些参数被称为形式参数(dummy parameter), 修改形参的数值不会影响实参的数值. 但是如果形参是指针或者相当于("相当于"这个词其实不适合理科生)指针的数组名, 那么, 在函数内部可以修改指针指向的地址的变量的值.
以上这段东西应该是每个学过 C 的人都会的, 可惜我居然一时没有想起来. 特地写了一段测试代码如下:
#include <stdio.h>
int main()
{
int a[4] = {0, 1, 2, 3};
int test(int a[], int n);
printf("%d\n", a[0]);
test(a, 4);
printf("%d\n", a[0]);
return 0;
}
int test(int a[], int n)
{
int i;
for(i=0; i<n; i++) {
a[i] += 1;
}
return 0;
}
然后输出值是:
0
1
最后希望这种忘记语言关键特性的突发事件不要再发生.
补充一句, 虽然 Fortran 依然看得云里雾里, 不过类似(这个词也不适合理科生)的操作在 Fortran 里面结果是相似的.