1樓:程佳
陣列是指標常量,常量不能賦值。
字串在c語言裡不是原生資料型別,就是乙個內容非0結尾為0的位元組陣列。所以對字串的操作要使用string.h裡那些庫函式。
2樓:神念的經
想啥呢,一旦定義成了靜態陣列,首元素位址就是定死的。想改位址?門都沒有。
指標賦值?那是改指向的位址,不是改指向的內容。
strcpy() 或 strncpy() ,請。
3樓:
字串陣列,編譯器編譯的時候回自動分配記憶體,而指標的宣告只會告訴編譯器,我是一段位址
看了你的宣告準確的說應該時字串變數而不是常量,常量的話,宣告是這樣的
const char hello[6] = "hello";
這才是是乙個常量的字串的宣告
而指標呢,你必須先給他分配一段記憶體空間,才可以使用,如果你不分配,就會出現段錯誤的報錯,字串,也得符合這個規則才可以
但是你可以這樣用,帶著指標的宣告這樣用
char *hello = "world";
也可以這樣用:
char hello = "world";
也可以使用sprintf:
sprintf(hello,"world");
或者使用memcpy等函式,上面我提到的是常使用的幾個方法,其他的還有很多,在說就深了,你先看看這寫基礎的,有興趣的話,學學linux和彙編,你就可以完全明白了
C 語言中如何優雅地拼接多段字串?
湛藍水晶 用sprintf strcat在設計之初是考慮了鏈式呼叫的,所以返回的是源位址,於是可以用 strcat strcat strcat strcat strcat strcat strcat strcat dest TEST1 ip TEST2 port TEST3 name TEST4 n...
C語言字串長度函式?
C語言答疑課堂 題主的問題有兩個地方需要回答 1.為什麼寫 c 100 會報錯?你看啊,陣列c定義的時候指定大小是100,這可不是意味著從1 100,而是0 99,C語言數字下標是從0開始的。對於我們來說,是不是有點不習慣?c 100 意味著第101個元素,這個元素並不在陣列裡,鬼才知道你是個什麼東...
C 在宣告const常量字串時,更常用string類還是更常用char 呢?
將子山 當然是std string view。當然你如果說的是constexpr std string,那不好意思還不支援。 Ninsun 常量的話 用char 本身是沒啥毛病的 你甚至搞成巨集定義都不一定會有問題。但是如果你的所有介面接受的字串都是string型別的 大概率 那還是用string吧...