C語言中字符串和字符數組的區別

字符數組:

char a[2]={'a','b','c'};

char a[]={'a','b','c'};

字符串:

char a[3]={“abc”};

char a[3]="abc";   //此處可以省略大括號

char a[]="abc";     // 與char a[3]={'a','b','c','\0'};    相同


紅字表明的地方爲什麼要變成3呢,因爲字符串賦值給數組後,在最後會默認增加一個字符“\0”,多佔用一個字符,如果定義的數組空間不夠,可能引起存儲錯誤,更改系統內存中其它數據,導致嚴重後果,如:


char a[2]="abc";


a[0]='a',

a[1]='b',

a[2]='c',


(a+3)指向地址空間被賦值爲'\0',而這並不是程序所希望的,擅自刪改內存中的數據,後果可想而知。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章