在《Expert C Programming》这本书中,第202页有这样一句话:在函数参数的声明中,数组名被编译器当着指向该数组第一个元素的指针。通过实例测试,这句话的意思就是:在声明这个参数的整个函数作用域内,数组名就是指针。 见测试用例: #include<iostream> #include<stdio.h> using namespace std; void fun(char ca[]) { printf("%x/n",ca); //打印数组第一个元素的地址 printf("%x/n",&ca); //打印的数组第一个元素的地址的地址 printf("%s/n",ca); //打印字符串 printf("%s/n",&ca); //乱码 printf("%x/n",&(ca[0])); //打印数组第一个元素的地址 printf("%s/n",&(ca[0])); //打印字符串 //主要cout和printf的区别. cout<<"ca = "<<ca<<endl; //打印字符串 cout<<"&ca = "<<&ca<<endl; //打印的数组第一个元素的地址的地址 cout<<"&(ca[0]) = "<<&(ca[0])<<endl; //从第一个元素开始打印字符串 cout<<"&(ca[1]) = "<