可能重复:
C编程语言中数组的大小?
为什么传入函数时我的int数组的大小会发生变化?
我的主要内容是:
int numbers[1];
numbers[0] = 1;
printf("numbers size %i", sizeof(numbers));
printSize(numbers);
return 0;
Run Code Online (Sandbox Code Playgroud)
这是printSize方法
void printSize(int numbers[]){
printf("numbers size %i", sizeof(numbers));}
Run Code Online (Sandbox Code Playgroud)
您可以看到我对数字数组没有做任何其他事情,但是当它到达printSize方法时大小会改变...?如果我使用*数字的值,它打印正确的大小......?
函数的任何数组参数都将衰减为指向数组第一个元素的指针.所以实际上,你的功能void printSize(int[])有效地具有签名void printSize(int*).完全,它相当于:
void printSize(int * numbers)
{
printf("numbers size %i", sizeof(numbers));
}
Run Code Online (Sandbox Code Playgroud)
以这种方式编写希望使您更清楚地看到指针的大小,而不是原始数组.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |