在函式中定義乙個字串,char *s = "asdfgh",相當於在**段申請了7個連續的位元組的記憶體空間用以儲存字串"asdfgh"(為何是7個位元組,因為字串末尾還有乙個'\0'字元,加上字串本身的6個字元,共佔7個位元組),同時在棧中定義乙個字元指標s,即
char * s,並將這7個位元組組成的這段記憶體的首位址賦值給s,即將字元'a'的記憶體位址賦值給s。
在函式中定義乙個字元陣列,char s="asdfgh",相當於在棧記憶體中定義了乙個字元陣列s,陣列元素個數為7個,並將這7個陣列元素依次初始化為'a'、's'、'd'、'f'、'g'、'h'、'\0'。
可見定義字元陣列的本意是分配記憶體空間,只不過恰好使用字串中的各個字元來初始化字元陣列的各個元素罷了,如果有需要可以隨時修改字元陣列的各個元素。而定義乙個字串,字串是分配在**段上的,不可更改,只能通過字串的位址(即字元指標變數s的值)來訪問該字串,所以定義字串實際定義上是定義了乙個由常量字元所組成的字串,然後把這個字串的位址存起來待用。
C語言字元陣列和字串
用來存放字元的陣列稱為字元陣列,例如 char a 10 一維字元陣列 char b 5 10 二維字元陣列 char c 20 給部分陣列元素賦值 char d 對全體元素賦值時可以省去長度 字元陣列實際上是一系列字元的集合,也就是 字串 string 在c語言中,沒有專門的字串變數,沒有stri...
字串 字串陣列 字元陣列的區別
string a newstring 字串 string a newstring 5 字串陣列 char a newchar 5 字元陣列 string a newstring abc 字串 string a newstring 字串陣列的賦值 string a 字串陣列的初始化 char a ne...
字元陣列和字串的區別
字元陣列和字串的區別 1.字串指標變數本身是乙個變數,用於存放字串的首位址。而字串本身是存放在以該首位址為首的一塊連續的記憶體空間中並以 0 作為串的結束。字元陣列是由於若干個陣列元素組成的,它可用來存放整個字串。2.對字串指標方式 char ps c language 可以寫為 char ps p...