gpt4 book ai didi

在函数内部使用时 c 数组大小的变化

转载 作者:行者123 更新时间:2023-12-01 12:33:04 25 4
gpt4 key购买 nike

我有这段代码:

#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)

关于在函数内部使用时 c 数组大小的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31797933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com