gpt4 book ai didi

c - C 中通过函数计算数组大小

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

我不知道为什么在通过我的函数传递数组时不能使用 sizeof(array) 只输出值 1,而不是 1000000。在将数组传递给函数之前,我打印了 sizeof(array)得到 4000000 ,当我尝试打印函数中的 sizeof(array) 时,我只得到 4。我可以在函数和 main 中迭代数组以显示所有值,但我只是无法在函数中显示 sizeof 。我是否错误地传递了数组?

#include <stdio.h>
#include <stdlib.h>

int
searchMe(int numbers[], int target)
{
printf("%d\n", sizeof(numbers));
int position = -1;

int i;
int k = sizeof(numbers) / sizeof(numbers[0]);

for (i = 0; i < k && position == -1; i++)
{
if (numbers[i] == target)
{
position = i;
}
}
return position;
}

int
main(void)
{
int numbers[1000000];
int i;
int search;
for (i = 0; i < 1000000; i++) {
numbers[i] = i;
}

printf("Enter a number: ");
scanf("%d", &search);

printf("%d\n", sizeof(numbers));
int position = searchMe(numbers, search);

printf("Position of %d is at %d\n", search, position);
return 0;
}

最佳答案

int searchMe(int numbers[], int target)

相当于

int searchMe(int *numbers, int target)

对于函数参数有一个特殊的 C 规则,即数组类型的参数调整为指针类型。

这意味着在您的程序中,sizeofnumbers实际上产生int *指针类型的大小,而不是数组的大小。

要获取大小,您必须向函数添加第三个参数,并在调用函数时显式传递数组的大小。

关于c - C 中通过函数计算数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897716/

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