在函数内部使用时,c 数组大小会发生变化

2024-05-06

我有这段代码:

#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(使用前将#替换为@)

在函数内部使用时,c 数组大小会发生变化 的相关文章

随机推荐