这个问题是C++基础问题中相当折腾人的一个,死记硬背解决不了根本问题,记住还是要忘,需要仔细研究其本质。
这两种方式就是数组和指针的方式:
char a[6] = "abcde";
char *b = "abcde";
第一行声明了并初始化了一个char数组,第二行是声明char指针b,指向了常量字符串。其中a是数组的首地址,a和b的地址一定不同。
千万不能说数组名是指针,可以用sizeof来否定:
char a[]="abcde";
cout<<sizeof(a)<<endl;
如果a是个指针,那么结果是4,但结果是6.
数组不能被直接复制,所以当数组名作为函数参数的时候,要么就是数组的引用,要么就是指向第一个元素的指针,他们的值是相等的。当你对一个数组做&的时候,他提取的是指向数组