数组与指针的区别:能否修改
数组和指针基本等价是C和C++的优点之一,在很多情况下,可以用相同的方式使用指针名和数组名。
//可以这样
char arr_ch[20] = "abcdefghijkl";
cout << arr_ch[2] << endl;
//也可以这样
cout << *(arr_ch + 2) << endl;
//以上两种方法等价
在多数表达式中,数组和指针都表示地址,而区别是:
指针的值可以修改
而数组名是常量,不能修改
//指针可以进行这样的操作,而数组不可以
char* p_arr_ch = arr_ch;
p_arr_ch = p_arr_ch + 2;
cout << *p_arr_ch << endl;
另外一个区别:
对数组使用sizeof()得到的是数组的长度
对指针使用sizeof()得到的是指针的长度(即使指针指向的是一个数组)