1.字元指針
指向字元型資料的指針變量。每個字元串在記憶體中都占用一段連續的存儲空間,并有唯一确定的首位址。
即将字元串的首位址指派給字元指針,可讓字元指針指向一個字元串。
如下:
對指針取内容,是首個字元;對指針取位址,擷取到了指針的位址。
一般來說,不是要取内容*才能擷取到内容嗎?這裡直接輸出p1和p2就可以擷取到内容了?
對int型數字來說:
直接輸出p1和p2是輸出的位址,它們所指向的堆記憶體的位址,隻有用了取内容符号之後才會輸出所指記憶體的内容。
2.是否添加\0?
https://blog.csdn.net/wuwuku123/article/details/103608918
這種方法定義時,系統會自動在字元串的末尾加上字元串結束符,即 ‘\0’,:
這種方法定義時,系統會自動從未初始化的元素開始,将之後的元素賦為\0,如上面的數組str中的元素實際上是:'1','2','3','4','5','\0','\0','\0','\0','\0'
系統不會自動在字元串的末尾加上字元串結束符;
此時用sizeof()函數可以正确求出其所占的記憶體大小;但用strlen()函數不能正确求出其長度,因為strlen是通過\0判斷字元串結束的。
是以,采用該方法定義時,一般人為地加上\0,即char str[]={'1','2','3','4','5', '\0'};