首頁 > 後端開發 > C++ > 在 C 中分配字串

在 C 中分配字串

Mary-Kate Olsen
發布: 2025-01-26 08:03:09
原創
982 人瀏覽過

提供的文字解釋了使用角色指標(char *string)和字元陣列(char string[])將字串儲存和修改字串之間的區別。

c程式碼範例顯示了指標和陣列之間的重要區別,通常是初學者的混亂來源。 考慮以下片段:

Assigning strings in C

>範例1(分段故障):>

此程式碼會導致分割故障。 為什麼?因為
<code class="language-c">#include <stdio.h>
int main(void) {
    char *string = "Wello, world!"; // string is a pointer
    string[0] = 'H';              // Attempting to modify a read-only string
    puts(string);
}</code>
登入後複製
被稱為字元

指標string。 該指標初始化為指向字串文字(“ wello,world!”),該指標通常儲存在唯讀的記憶體中。 試圖修改此僅讀取記憶體的內容會導致分割故障(記憶體存取違規)。

>範例2(成功修改):

> 此程式碼成功列印了「 Hello,World!」。 在這裡,

被聲明為a
<code class="language-c">#include <stdio.h>
int main(void) {
    char string[] = "Wello, world!"; // string is an array
    string[0] = 'H';              // Modifying a writable copy of the string
    puts(string);
}</code>
登入後複製
字元數組

。編譯器在堆疊上分配空間以保存字串文字的副本。 此副本是可寫的,可以修改string而不會引起錯誤。 鍵差:string[0]

>基本差異在於字串的儲存方式。 在範例1中,字串文字位於僅讀取的記憶體中,指標只是指向它。在範例2中,建立並儲存在堆疊上的陣列中的字串文字的可寫複製

結論: >指標和陣列是C中不同的資料型態。儘管它們在某些情況下可能看起來相似,但它們的行為可能會有很大差異,尤其是在處理字串文字時。 始終注意這種區別,以避免出乎意料的錯誤和分割故障。 使用字元陣列進行修改字串通常比使用字元指標來串起文字更安全。

以上是在 C 中分配字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板