字元指標和字元陣列的初始化

2021-07-04 09:55:57 字數 630 閱讀 9368

char* str1 = "abcd";

char str2 = "abcd";

char* str1 =」abcd」

含義是先新建乙個字串,內容是abcd 然後str1是乙個頭指標,指向這個串. 但是這個新建串是作為const存在的,並不是乙個可以編輯的變數,因此,一旦你想更改其中的值,程式就會出錯。根據定義:指向常量字串的指標不能更改指標指向的內容,但是可以改變本身的值,既是執行*(str1+2)=』w』;(錯誤) str1=」bcvcbvv」(正確)

相應的

char str1 = (char)malloc(5*sizeof(char));

str1 = 「abcd」;

相當於開闢乙個5個長度的陣列,頭指標是str1,但是第二句又把str1指向的位置變了,之後還是不能操作str1的內容.

char str2 = 「abcd」

這個相當與指標常量,就是本身是個常量《因為str2就是陣列的乙個引用,引用本身就是指標常量》這個的含義是在記憶體中開闢乙個陣列,然後向該陣列中填充」abcd」, 是乙個可操作的變數.所以初始化的時候可以這麼寫,就能在之後更改其中的內容了.

這裡 *(str2+2)=』w』(準確) str2=」mnbmbmb」(錯誤)

字串初始化指標和初始化陣列區別

定義指標時,編譯器並不為指標所指向的物件分配空間,它只是分配指標本身的空間,除非在定義時同時賦給指標乙個字串常量進行初始化。在ansi c中,初始化指標時所建立的字串常量被定義為唯讀。如果試圖通過指標修改字串的值,程式就會出現未定義的行為。在有些編譯器中,字串常量被存放在只允許讀取的文字段中,以防止...

字元陣列初始化

上週實習做fcitx輸入法時碰到乙個字元陣列的問題,因基礎的不紮實,導致經除錯了幾分鐘才發現問題所在。字元陣列初始化常見有兩種格式 char arr test 10 和char arr test 11 helloworld 為什麼是一樣的內容,兩個陣列的長度不一樣,乙個是10,乙個是11,因為預設在...

字元陣列的初始化

有關字元陣列的初始化的若干問題 一 注意事項 1.字元陣列的初始化,初始化時賦予的自然是字元 要加單引號 2.賦予字元也可以通過賦予相應字元的ascii碼 去掉單引號 或賦予字串 只加雙引號 來進行。3.對字元陣列完全不進行初始化,則各元素隨機。4.對字元陣列進行不完全初始化,則從低位址 a i 中...