字元陣列與字串,字元陣列與字元指標(總結大全)

2021-06-21 10:13:17 字數 1561 閱讀 2163

1.誤區:字元陣列就是字串

來自:

字元陣列,完整地說叫字元型別的陣列。字元陣列不一定是字串。

字串是最後乙個字元為null字元的字元陣列。字串一定是字元陣列。

字元陣列的長度是固定的,其中的任何乙個字元都可以為null字元。

字串只能以null結尾,其後的字元便不屬於該字串。

strlen()等字串函式對字串完全適用,對不是字串的字元陣列不適用。

#include #include int main(void)

; //這是字串賦初值的方法

char sarr = "quanxue";

//用sizeof()求長度

printf("carr的長度=%d\n", sizeof(carr)); //長度為7

printf("sarr的長度=%d\n", sizeof(sarr)); //長度為8,最後一位是null

//用printf的%s列印內容

printf("carr的內容=%s\n", carr); //不能正確顯示

printf("sarr的內容=%s\n", sarr); //可以正確顯示

//用strlen()求長度

printf("carr的長度=%d\n", strlen(carr)); //不正確的結果

printf("sarr的長度=%d\n", strlen(sarr)); //null不在計算範圍

return 0;

}

2.字元陣列與字元指標

首先在記憶體的中位置不同,字元陣列儲存的字串存放在記憶體的棧中,而字元指標指向的字串儲存在記憶體的靜態儲存區中。

其次字元陣列儲存的字串屬於字串變數,可以被修改,而字元指標指向的字串是屬於字串常量,不能被修改。

#include int main()

; char* ptr = "hello world";

str[0] = 'f';

ptr[0] = 'f'; //將字元指標指向的字串修改,將出現段錯誤,因為該記憶體位址唯讀(常量區),因為該字串屬於常量

return 0;

}

3.關於其它自己驗證的**:

#include void main()

{ char a = "hello";

char b[5] = "hello";

char *c = "hello";

printf("sizeof:%d,strlen:%d,%s\n", sizeof(a),strlen(a), a);

printf("sizeof:%d,strlen:%d,%s\n",sizeof(b),strlen(b), b);

printf("%c", a[5]);

printf("sizeof:%d,strlen:%d",sizeof(c),strlen(c));

int i;

for(i=0;i

解釋:關於sizeof(c),算的是指標大小。其實c和a的儲存空間一樣大。都是6。

字元陣列與字串

字元陣列與字串 字串就是字元的序列,可看作單個資料項。定義在雙引號之間的字元組 雙引號除外 就是乙個字串常量。例 man is abviously made to think 字串變數的宣告與初始化 c語言並不支援字串資料型別。但是,它允許作為字元陣列來表示字串。因此在c語言中,字串變數就是任何合法...

字元陣列與字串

字元陣列與字串 6.3.1 字元陣列的逐個字元操作 案例6.5 從鍵盤輸入乙個字串,回車鍵結束,並將字串在螢幕上輸出。main i 0 while str x0d printf c str i printf n getch 1 字元陣列的定義 1維字元陣列,用於儲存和處理1個字串,其定義格式與1維數...

字元陣列與字串

char str 6 char str2 6 world printf s n str scanf s str2 for i 0 str i 0 i 說明 系統為了明確區分記憶體上的字串從屬關係,它會去尋找空字元,ascii嗎為0 我們稱為結束符,從陣列名指標位一直往後找,知道找到空字元為止。既然字...