(原創) char s[]字串和char *s字串有什麼差別? (C/C++) (C)

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

C語言有兩種字串宣告方式char s[]和char *s,兩者有什麼差異呢? ... 狀況下用法相同,但char *s速度略快,因為不需copy的動作,且*s++為C語言常用的 ... 首页 新闻 博问 专区 闪存 班级 我的博客 我的园子 账号设置 简洁模式... 退出登录 注册 登录 真OO无双之真乱舞书 寫程式是很快樂的一件事SinceSep.15,2006 (原創)chars[]字串和char*s字串有什麼差別?(C/C++)(C) C語言有兩種字串宣告方式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 <



請為這篇文章評分?