在這里,我們沒有定義字符數組,而是在程序中定義了一個字符指針變量string,用字符串常量"I love China!",對它進行初始化。C語言對字符串常量是按字符數組處理的,在內存中開辟了一個字符數組用來才存放該字符串常量。對字符指針變量初始化,實際上是把字符串第1個元素的地址(即存放字符串的字符數組的首元素地址)賦給string。有人認為string是一個字符串變量,以為在定義時把"I love China!"這幾個字符賦給該字符串變量,這是不對的!!
實際上,char *string="I love China!";等價于:
Char *string;
String = “I love China!”;
可以看到,string被定義為一個指針變量,指向字符型數據,請注意它只是指向了一個字符變量或其他字符類型數據,不能同時指向多個字符數據,更不是把“I love China!”這些字符存放到string中(指針變量只能存放地址),也不是把字符串賦給*string。只是把“I love China!”的第一個字符的地址賦給指針變量string。