数组未退化为指针的三种例外

今天无意中看到以前的代码,关于指针数组的一些知识点又忘了,记录一下,查缺补漏。

数组在代码中一般会退化为指向该数组第一个元素的指针,除了以下三种情况(C标准中有说明):

1,sizeof关键字后。char a[5], sizeof(a) 的值为5,并不是指针所占内存的大小。

2,&符号后。char a[5], &a+1的值为&a[0]+5*sizeof(char),并不是&a[0]+1(即a+1)。

3,作为初始化字符数组的字符串常量(字符串字面量)。char a[5] = "abcde",这句代码在编译器中是将在常量区的“abcde"拷贝给数组a,字符串常量是以字符数组的形式存在。

posted on 2013-01-22 21:08  kevin_kang  阅读(168)  评论(0)    收藏  举报

导航