C語言中字元陣列用 初始化?

時間 2021-06-09 19:47:47

1樓:Elias Wang

我們大致先把概念理清一下:

字元陣列

├── 初始化 // 在宣告變數的同時,為變數分配儲存空間,並初始化資料34;foo" // string literal 形式,初始化變數位址39;f', 'o', 'o', '\0'} // array 形式

├── 賦值 // 變數已經被宣告,再對變數已有的儲存空間進行操作34;foo" // string literal 形式,進行指標賦值

│ ├── 不可使用 array 形式初始化對於先宣告變數,不做初始化的情況,這樣的操作時允許的:

char*s

;s="abc";//

將s指向該string

literal

對於宣告變數的同時,進行初始化的情況,以下兩種方法都是允許的:

char*s

="abc"

;chars=;

2樓:

s = ;

這句屬於賦值操作,而 {} 僅能用於初始化。

char *s = ;

這句就是典型的初始化操作了,所以不會出錯。

3樓:輝夜

因為第乙個在引用的時候出問題了。char *s表示這是乙個指向字元型的指標變數,*s這個整體相當於乙個字元型變數。而s則表示的是這個變數的位址,所以說第乙個引用是有問題的,怎麼能用那個字串去給乙個位址賦值呢?

C語言 關於C裡面陣列批量初始化

蛋蛋的蛋 int a 1000 補充一下,類似的方式可以讓前500個元素等於1,後500個等於0,手機打字,不方便,有心人自己嘗試吧, 向晨 c標準庫有個limits.h的標頭檔案,裡面有你所使用機器的int char等型別變數的位元組長度和大小限制相關的巨集,可以用這些巨集來知道乙個int對應幾個...

c語言中為什麼不能用char 指向字元陣列?

心不變情依舊 char 是二級指標,表示指標的指標,就是把不連續的空間連線起來,第乙個指標指向char 而char 可以表示一階陣列。 喵NLI 因為char z不是指標,是直接存放於棧中的陣列,這種情況下r z與r z都是獲取到z這個陣列的位址而不是二級指標 charz hello char y ...

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

程佳 陣列是指標常量,常量不能賦值。字串在c語言裡不是原生資料型別,就是乙個內容非0結尾為0的位元組陣列。所以對字串的操作要使用string.h裡那些庫函式。 神念的經 想啥呢,一旦定義成了靜態陣列,首元素位址就是定死的。想改位址?門都沒有。指標賦值?那是改指向的位址,不是改指向的內容。strcpy...