C語言中字元陣列和指向字元陣列的指標的區別

2021-08-07 07:28:35 字數 633 閱讀 6556

首先字元陣列的定義方式有如下兩種:

char a = "abc";

該操作初始化陣列的大小為4,其中元素分別為'a','b','c','\0'.

若用printf("%s\n",a);

輸出為abc

char a[3] = "abc";

若用printf("%s\n",a);

輸出會產生非預期的結果,在處理的時候編譯器沒有為a的末尾新增'\0'作為結束符

所以一般推薦使用前一種方式進行初始化字元陣列。

字串的初始化:

可以使用字元陣列來替代

方式1:char a = "abc";

或者方式2:char * a = "abc";

區別在與

第一種方式可以使用賦值語句進行更改,例如 *a = 'd';

但是第二種方式中上述更改是不允許的,會在執行時出現段錯誤。

讀操作兩種方式表現一樣。

兩種方式對字元陣列的實現機制不同。方式2,編譯器在記憶體的文字常量區分配一塊記憶體,儲存」abc「字串字面值,然後在棧上分配記憶體儲存a,a的值"abc"的位址。a[0]='c'試圖修改常量」abc「,程式會出錯。而char a="abc"語句,定義了乙個陣列,編譯器為其在棧上分配了記憶體空間,所以進行修改操作是沒有問題的。

C語言中關於字元陣列和指標陣列

做筆試題目的時候,碰到字元陣列初始化的問題,居然一下子懵了。在c語言中儲存字串有兩種方法 字元陣列和字串指標 這兩者的儲存位置不同,首先字元陣列 區域性變數 是儲存在棧中的 指標指向字串時,則包括了兩部分,指標本身,儲存在棧中 區域性指標變數 字串本身儲存在 段 gcc中是這樣 基於上面一點就會產生...

C語言中的字串和字元陣列

1 字元陣列的定義與初始化 字元陣列的初始化,最容易理解的方式就是逐個字元賦給陣列中各元素。char str 10 即把10個字元分別賦給str 0 到str 9 10個元素 如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理 若小於陣列長度,則只將這些字元陣列中前面那些元素,其餘的元素自動定...

C語言中字元陣列庫函式

以下內容摘自 c程式設計教程 美 h.m.deitel p.j.deitel著,薛萬鵬等譯,機械工業出版社。void memccpy void dest,const void src,int c,size t n 從sr 所指向的物件複製 個字元到 est所指向的物件中。如果複製過程中遇到了字元c則...