指针和数组--小总结
一、总体来说,
1、对任意数组和指针:数组名可认为是指向数组中第一个元素的指针。虽然是地址,但不同于指针,数组名不是变量,而是常量地址,所以不能修改数组名!!!比如:
int array0[5] = {0};
int array1[5] = {0};
array0 = array1; //试图对数组名array0赋值,这是绝对错误的!
2、还有对数组名决不能进行++或--操作!!!(自己老是犯这样的低级错误!必改正之!)
比如:
int array0[5] = {0};
int a_temp = *(array0++); //绝对错误!
3、无论什么类型,在输出结果时,必定会有相应的存储空间存储该结果;所以,必须为结果开辟存储空间:或者预先开辟适当的空间或者动态分配空间;
这里要注意:决不能通过指针++或--的方式,找到下一个未开辟或未定义区域做下一个存储空间,否则程序极可能崩溃!(血的教训!!!)
二、针对字符串:
1、例如:“We are friends!”,这样的字符串将存储于静态存储区,char* str = “We are friends!”;将首地址赋予str,此时,str既不能修改,也不能利用str修改字符串内容,比如str[0] = 'r';是错误的!!
2、char str[] = “We are friends!”; 则先将字符串copy到动态存储区,再将复制字符串的地址赋予str,因此可以通过str修改复制字符串。
清醒时做事,糊涂时读书,大怒时睡觉,独处时思考; 做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己
-- 共勉