我有以下代码指向int类型数组的指针的大小是多少?
#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;
}
的输出是用C
16
4
尺寸指针为4“的常用3”也是一个指针的整数,但其大小出来是16 ,它是一个元素的大小和元素的数量的乘积。另一方面,如果我将相同的指针存储到另一个指针变量中,那么它的大小就变成4.这很混乱。如果我尝试将arr作为参数发送给函数,然后在该函数中输出arr的大小,会发生同样的情况。 C如何处理指向数组的指针?
这里是一个很好的解释指针和数组之间的区别[是数组名称中的指针?](http://stackoverflow.com/questions/1641957/is-array-name-a-pointer- in-c) – 2014-09-05 13:16:58
另请参阅comp.lang.c [常见问题7.28“为什么sizeof不能指示指针指向的内存块的大小?”](http://c-faq.com/ malloc/sizeof.html) – david 2014-09-05 13:27:28
感谢@KlasLindbäck上面的例子清除了我所有的误解。 – shafeeq 2014-09-05 13:32:56