gpt4 book ai didi

c - 从C中的参数获取int数组的大小

转载 作者:行者123 更新时间:2023-11-30 15:28:26 25 4
gpt4 key购买 nike

我正在学习 C 语言。

我需要int数组的大小(在函数的参数中传递)。

我能够使用以下方法获取 int 数组的大小:

int size = sizeof(arr) / sizeof(int);    

但是,当我在参数化数组上使用相同的代码时,上面的代码对我不起作用。

程序:

void printArraySize(){
int arr[]= {1, 2, 3, 4, 6, 7};
int size = sizeof(arr) / sizeof(int);
printf("\nSize = %d",size); // resulting right value
doStuff(arr);
}
void doStuff(int arr[]){
int size = sizeof(arr) / sizeof(int); // resulting 1
printf("\ndoStuff::Size = %d",size);
}

输出:

尺寸 = 6
doStuff::大小 = 1

“尺寸”值显示正确。但是,为什么 doStuff::Size 是 1 ?
虽然,我在两个函数中使用相同的概念,区别只是参数化数组。
如果我做了任何错误,请提出您的建议或纠正错误。

最佳答案

当数组传递给函数时,它会转换为指向其第一个元素的指针。所以你在函数中所做的基本上相当于:

int size = sizeof(int*) / sizeof(int); // resulting 1

如果您想传递大小,请将其作为另一个参数传递给函数。

例如,

void doStuff(int arr[], size_t size){
..
}

并将函数调用为:

doStuff(arr, size);

您确实应该使用 size_t 作为 sizeof 运算符返回一个 size_t ,它可能大于 int >.

关于c - 从C中的参数获取int数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577745/

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