《C/C++数组名与指针区别深层探索》
作者:宋宝华 e-mail:21cnbao@21cn.com
看了这篇文章之后,终于将混淆了很久的概念搞清楚了。
数组名不是指针,文章总结了的结论: 1)数组名的内涵在于其指代的实体是一种数据结构,其数据结构就是数组; 2)数组名的外延在于其可转换为指向其指代实体的指针,而且是一个指针常量; 3)指向数组的指针则是另外一种变量类型,仅仅意味着数组的存放地址。
数组名在作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针; 在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改;所以数组名作为函数形参时,全面沦落为一个普通指针。 |
void func(char array[])
{
printf("%d ", sizeof(array));
}
void main()
{
char a[10] = "hello !";
func(a);
}
结果:4