gpt4 book ai didi

c - sizeof(指针变量)/sizeof(数组第一个元素)的结果始终显示2

转载 作者:行者123 更新时间:2023-11-30 21:33:06 25 4
gpt4 key购买 nike

通常为了找到数组的大小,我们会这样做..

int A[]={1,2,67,9,0,-1,-90};
int n=sizeof(A)/sizeof(A[0]);
printf("the size of the array is %d\n", n);`

上述代码的输出显示大小为 7。但是当 A 被放入某个指针然后,如果我们尝试做同样的事情,它会显示

int A[]={1,2,67,9,0,-1,-90};
int *B=A;
int n=sizeof(B)/sizeof(B[0]);
printf("the size of the array is %d\n", n);

答案是2

如何使用此指针查找数组的大小。

最佳答案

int n=sizeof(B)/sizeof(B[0]);

结果是 2,因为 sizeof(B)sizeof(pointer ) 而不是 sizeof(array )

int A[]={1,2,67,9,0,-1,-90};
int *B=A; // <-- B is a pointer pointing to the first element of array A
int n=sizeof(B)/sizeof(B[0]); // <-- sizeof(pointer) / sizeof(int)

结果取决于机器,但您可以验证这两个 printf 的输出是否相同:

printf( "sizeof(B)/sizeof(B[0]) = %zu\n", sizeof(B)/sizeof(B[0]) );
printf( "sizeof(int *)/sizeof(int) = %zu\n", sizeof(int *)/sizeof(int));

关于c - sizeof(指针变量)/sizeof(数组第一个元素)的结果始终显示2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290921/

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