我有这段代码:
#include <stdio.h>
int max_number(int numbers_array[]);
int main(){
int numbers_array[] = {10, 20, 30, 40, 50, 10, 60, 2500, 25555};
printf("size: %d\n", sizeof(numbers_array));
max_number(numbers_array);
return 0;
}
int max_number(int numbers_array[]){
printf("size of array: %d\n", sizeof(numbers_array));
}
输出是:
size: 36
size of array: 8
但输出应该是一样的吧?
有谁知道问题是什么?
非常感谢。
当然。
第一个是声明变量的大小
int numbers_array[] = {10, 20, 30, 40, 50, 10, 60, 2500, 25555}
即使在编译时,它的大小也是众所周知的:9 个元素 * 每个元素 4 个字节 = 36 个字节
第二个是指向整数的指针的大小,8字节(64位寻址)
关键是该函数无法随时知道其数组参数的大小。由于数组是指针,因此它总是并且只看到一个指针。
下列
int max_number(int numbers_array[])
相当于
int max_number(int *numbers_array)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)