我的代码是
#include <stdio.h>
#define MAXVAL 100
int getCharsMethod(char s[],int);
main(){
char foo[MAXVAL];
int len;
len=getCharsMethod(foo,5);
printf("value of foo is -- %s and len is %d",foo,len);
}
int getCharsMethod(char s[],int lim){
int i;
for(i=0;i<lim;++i)
s[i]=getchar();
return i;
}
Run Code Online (Sandbox Code Playgroud)
现在我没有在数组中插入任何值foo[].但是插入s[]函数内部数组的值会反映在foo[]数组中.
我只是将一个foo[]带有长度的空数组传递MAXVAL给函数,getCharsMethod()如何s[]在函数内部的数组中插入的字符反映在foo[]数组中.
将数组传递给函数时,它(基本上)只获取数组第一个元素的地址.
所以数组s和foo使用相同的内存,这就是为什么从外部看到函数内部的写入.
有人会认为这必须从你的代码中显而易见,否则char s[]甚至意味着什么?它没有长度,所以它如何接受使用赋值到s[i]函数内部的存储元素.您是否希望C能够自动创建和管理神奇的增长阵列?如果是这样,那么请阅读更多关于语言的内容.它不像那样工作.