【发布时间】:2014-09-05 13:10:39
【问题描述】:
我有以下代码
#include <stdio.h>
int main(void) {
int arr[] = {10,20,30,40};
int* ptr = arr;
printf("%d\n",sizeof(arr));
printf("%d",sizeof(ptr));
return 0;
}
输出是
16
4
C 中指针的大小是 4。'arr' 也是一个指向整数的指针,但它的大小是 16,这是一个元素的大小和元素数的乘积。 另一方面,如果我将相同的指针存储到另一个指针变量中,那么它的大小将变为 4。这非常令人困惑。如果我尝试将 arr 作为参数发送给函数,然后在该函数中打印 arr 的大小,也会发生同样的事情。 C如何处理指向数组的指针?
【问题讨论】:
-
这里很好的解释了指针和数组的区别Is array name a pointer in C?
-
感谢@KlasLindbäck 上面的例子洗清了我所有的误解..