字串指標和字串陣列的區別

2021-05-13 00:20:38 字數 499 閱讀 7264

char *p1 = 「a string.」 和 char p2 = 「another string.」 寫法的不同

p1指向的這個字串是個常量, 不可改變 。 程式在編譯期間就為"a string."這個字串分配了固定的空間, 它被儲存在全域性靜態區中. 編譯器只是把指標p1的指向的位址賦為「a string.」的首位址,並沒有為指標p1指向的位址分配可供操作的記憶體(除非使用malloc),如果試圖改變p1指向的字串,則會出錯(試圖改變不可寫記憶體內容的錯誤)。

而p2是個變數, 其內容可以被更新和改變, p2可以理解為乙個不可改變其指向位置的指標, 即char * const p2, 它所占用的內存在程式執行時被自動分配和釋放, 而p1占用的記憶體要等到整個程式結束時才被釋放. 編譯器為陣列b分配了可供操作的儲存空間.

c** 

#include 

void  main()    

void  copy_string(char  *si, char  *di)    

字串陣列和字串指標的區別

在最早學c語言的時候,char 與char 是最讓我頭疼的幾個問題之一。字串陣列和字串指標是截然不同的兩個東西,如果不去在意它們之間的不同,而混合使用,可能會帶來很多麻煩。讓我們從這兩個東西建立的過程說起。當我們進行字串陣列的定義時 char str abc 其實我們做了兩件事 1.建立了乙個新的字...

字串,字串陣列,字串指標!!

字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...

字串陣列和字串指標的使用和區別

字串陣列 include include int main 這段 能夠正常編譯和鏈結,但在執行時會出現段錯誤 segment fault 或者寫入位置錯誤。第4行 是正確的,可以更改指標變數本身的指向 第5行 是錯誤的,不能修改字串中的字元。在程式設計過程中如果只涉及到對字串的讀取,那麼字元陣列和字...