C語言中,字串常量為什麼只能給字元陣列初始化,而不能通過指標賦值

時間 2021-07-13 20:56:59

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吧...