(轉) char s[]字串和char *s字串有什麼差別? @ 大玩家闖天涯的 ...

文章推薦指數: 80 %
投票人數:10人

AbstractC語言有兩種字串宣告方式char s[]和char *s,兩者有什麼差異呢?Introduction char s[] = "Hello World";char * 關閉廣告 大玩家闖天涯的部落格 跳到主文 歡迎光臨大玩家闖天涯在痞客邦的小天地 部落格全站分類:不設分類 相簿 部落格 留言 名片 Sep07Mon201511:40 (轉)chars[]字串和char*s字串有什麼差別? AbstractC語言有兩種字串宣告方式chars[]和char*s,兩者有什麼差異呢?Introduction char s[] = "Hello World";char *s  = "Hello World"; 皆宣告了s字串,在C-stylestring的函數皆可使用,但兩者背後意義卻不相同。

char s[] = "Hello World"; 的s是個chararray,含12個byte(包含結尾\0),"HelloWorld"對s來說是initializer,將字元一個一個地copy進s陣列。

char *s = "Hello World"; 的s是一個pointer指向char,由於"HelloWorld"本身就是一個stringliteral,所以s指向"HelloWorld"這個stringliteral的起始記憶體位置。

做個簡單的實驗證明兩者不同  1#include  2 3using namespace std; 4 5int main() { 6 char s1[] = "Hello World"; 7 char *s2  = "Hello World"; 8  9 cout < 2 3using namespace std; 4 5int main() { 6 char s[] = "Hello World"; 7  8 for(int i = 0; i != 11; ++i) { 9  cout < 2 3using namespace std; 4 5int main() { 6 char *s = "Hello World"; 7  8 for(int i = 0; i != 11; ++i) { 9  cout < 2 3using namespace std; 4 5int main() { 6 char *s = "Hello World"; 7  8 while(*s)  9  cout <



請為這篇文章評分?