字元指針變量和字元數組都可以處理字元、字元串,但是兩者卻有着本質的差別。今天用到就把所有的總結一下,以供大家參考!
1、字元數組初始化及指派
char c_a[] = {"songjinshi"};//正确
char c_a[] = {'s','o'};//正确
char c_a[] = "songjinshi";//正确
char c_a[11];
c_a = "songjinshi";//錯誤,c_a是一個指針常量不能直接指派
c_a++;//錯誤,c_a是一個指針常量
for(i=0;i<11;i++)
scanf("%c",c_a+i);//正确
scanf("%s",c_a);//正确
strcpy(c_a,"songjinshi");//正确
2、字元指針初始化及指派
char* c_p = "songjinshi";//正确
char* c_p = 0;//正确,指針變量值為0,字元串長度為0,即字元指針指向一個空字元串
char*c_p = "songjinshi";
c_p = "song";//正确,改變字元指針指向的字元串,即改變字元指針變量的值(位址)
c_p++;//正确,移動指針
printf("%s",c_p);//輸出ongjinshi
char* c_p;
scanf("%s",c_p);//錯誤,c_p是一個字元指針但是沒有指向有效的記憶體位址(空間)
char* c_p = "song";
*c_p = 'z';//錯誤,c_p指向的是常量資料區(常量資料表——靜态存儲區),不能更改裡面的内容
char* c_p = "songjisnhi";
strcpy(c_p,"zhangdi");//錯誤,c_p指向常量資料區,無法更改