p指的是數組第壹個元素的地址,所以*p就是p指向的這個地址的值.
錯誤在於str是壹個指向字符串的指針。
例如
printf("%s\n ",str);將輸出整個程序。
這說明BCD是錯的。
字符串的表示形式
在C程序中,有兩種方法可以實現壹個字符串。
1.由字符數組實現。
[示例8.11]
無效總管(無效)
{static char string [ ]=“我愛中國!”;
printf("%s\n ",string);
}
運行時輸出:我愛中國!
和前面描述的array屬性壹樣,string是數組名,代表字符數組的第壹個地址(見圖8.17)。String[4]表示數組中序列號為4的元素(V)。其實string[4]是*(string+4),string+4是指向字符“V”的指針。
2.它是通過字符指針實現的。
妳可以定義壹個字符指針來代替字符數組。用字符指針指向字符串中的壹個字符。
[示例8.12]
無效總管(無效)
{char *string= "我愛中國!";
printf("%s\n ",string);
}
這裏沒有定義字符數組,但是C語言把字符串常量當作字符數組,實際上是在內存中開辟了壹個字符數組來存儲字符串數組。程序中定義了壹個字符指針變量字符串。並將字符串第壹個地址(即用於存儲字符串的字符數組的第壹個地址)賦給它(見圖8.18)。有人認為string是字符串變量,以為“我愛中國!”已定義。賦給字符串變量,這是不確切的。