C語言 字串的三種「方便的」初始化方法及其區別

2021-10-20 16:30:52 字數 1206 閱讀 3769

本文**現的 puts() 、strlen() 函式需引入 string.h 標頭檔案

#include
char str2[10]="to";
char *str2="birthday";
我們分別用 strlen() 和 sizeof() 函式,看看「單詞位元組數」和「變數在記憶體中的位元組數」的區別。

// 1 不規定大小的字元陣列

printf("%s的長度為 %d,",str1,strlen(str1));// strlen() 輸出了實際單詞位元組數 5

printf("str1在記憶體中的長度為 %d \n\n\n",sizeof(str1));// sizeof() 輸出了實際位元組數 6

// 2 規定大小的字元陣列

printf("%s的長度為 %d,",str2,strlen(str2));// strlen() 輸出了單詞位元組數 8

printf("str2在記憶體中的長度為 %d \n\n\n",sizeof(str2));// sizeof() 輸出了指向char型別的指標變數在記憶體中的位元組數 4

// 3 指標

printf("%s的長度為 %d,",str3,strlen(str3));// strlen() 輸出了實際單詞位元組數 2

printf("str3在記憶體中的長度為 %d \n\n\n",sizeof(str3));// sizeof() 輸出了定義的陣列的長度 10

執行結果:

1 是因為末尾加了 \0

2 因為初始化時,規定了字元陣列長度為 10

3 是因為 char * 型別的位元組數為 4

在記憶體中的具體示意圖可以參考 master_yoda 這位作者的 【c語言字串陣列兩種不同的初始化方式的區別】這篇文章。

完整測試**如下:

#include #include int main()

執行結果:

c語言字串初始化 C 字串

c 提供了以下兩種型別的字串表示形式 c 風格的字串起源於 c 語言,並在 c 中繼續得到支援。字串實際上是使用null字元 0 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。下面的宣告和初始化建立了乙個 hello 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的...

C語言 字串的初始化辨析

以下是常用的四種字串初始化方法 一 char str 10 hello 結尾會被編譯器自動加上結尾符 0 編譯的時候可以看到它最後是 asc碼值是0 hello 只有5個字元,加上編譯器自動新增的 0 也就是會初始化陣列的前6個元素,剩下有元素會被全部初始化為 0 這個要注意哦 二 char str...

C 列表初始化,字串初始化

列表初始化 int a 0 int a 全面應用 int a int a 0 預設初始化 定義變數時,沒有指定初值,則變數被預設初始化。定義函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化。字串初始化 string s1 string s2 s1 string s2 s1 string...