三个结论:
(1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;
(2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;
(3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址!
- #include <iostream.h>
- int main(int argc, char* argv[])
- {
- char str[10];
- char *pStr = str;
- cout << sizeof(str) << endl; //输出是10
- cout << sizeof(pStr) << endl; //输出是4
- return 0;
- }
数据名可能失去其数据结构内涵:
(1)数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;
(2)同时,还失去其常量特性,可以作自增、自减等操作,可以被修改。
- #include <iostream.h>
-
- void arrayTest(char str[])
- {
- cout << sizeof(str) << endl; //输出结果为4
- }
- int main(int argc, char* argv[])
- {
- char str1[10] = "I Love U";
- arrayTest(str1);
- return 0;
- }
注:程序的输出结果为4
所以,数据名作为函数形参时,其全面沦落为一个普通指针!它的贵族身份被剥夺,成了一个地地道道的只拥有4个字节的平民。