http://zhidao.baidu.com/link?url=uM-DndqTMTGsWbIInwYaqo0Mv0q62z8MB-NvOAhnU77Cj-bIkOEiRA8ZvhkuE8IDBjh4bon7nE8jN-p2KXZVu_rCzEbwFEAWmiBY-YddT97
问:数组名不是首元素的指针咩,为什么sizeof数组名能够知道数组长度?答案:
数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。这种误解的根源在于国内某著名的C程序设计教程(出版量最多的那本破书)。 数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;指向数组的指针则是另外一种变量类型,仅仅意味着数组的存放地址! sizeof(a)为什么等于40呢,因为数组这种结构保存了数组的大小,有的书说这个值保存在数组首地址前面的内存中(这一点,我没验证)。最简单的方法你就记着,数组名不是普通的指针。