**:
char
是用來儲存單個字元的;
例如:
char ch =
'a';
char
是用來儲存多個字元的;
例如:
char ch[5]
=;//陣列本質上就是同時定義了多個變數,並對變數進行初始化
當char
最後乙個字元為'\0'
的時候,這是乙個字串
例如:
char ch[6]
=;
字串也可以寫成:
char ch[6]
="hello"
;//char ch = "hello"; //一般為了方便,不寫陣列元素個數
char ch=
"hello world"
;//儲存在棧記憶體,內容可以被修改???
char
*ch =
"helloworld"
;//儲存在常量區,內容不能被修改等價於const char *ch = "hello world";???
//char * 字元指標與int * 相比在形式上多了這種賦值方式:
#include
intmain
(int argc,
char
*ar**)
結果:
10touch world!
//這是char* 與int* 的相同的地方
2)
#include
intmain
(int argc,
char
*ar**)
//char * 還可以直接賦值乙個字串常量!!!這個與int * 的不同之處。
//實質上"helloworld"返回的也是位址,而不是字串常量本身。
對字串陣列進行初始化的方法有兩種:
1) 定義的時候直接初始化:
char ch=
"hello"
;
2)使用字元陣列的拷貝函式
char* strcpy(char *dst, const char *src);
#include
#include
intmain
(int argc,
char
*ar**)
;printf
("%s\n"
,ch)
;char
*p =
"hello"
;strcpy
(ch,p)
;printf
("%s\n"
,ch)
;return0;
}
注意:dst是已經申請的記憶體單元,足夠大的可修改的記憶體區域,
需能盛下src內的字元個數,並且不能是指向常量的字串常量,
所以可以是字元陣列char ch[6];也可以是new的記憶體
char
*ch = new char[6
];
但是不能是
char
*ch;
strcpy
(ch,p)
;//這樣會報錯!!!!
總結:
1)字元指標既可以指向字串,也可以指向某個字元變數
2)字元陣列名是常量,故陣列名不能++;字元指標是個變數,故指標可以++;
字元陣列是變數的集合,故字元陣列元素可以++;字元指標指向的是字串常量,常量是不能++的,故*p++是錯誤的。
C語言中字元陣列和指向字元陣列的指標的區別
首先字元陣列的定義方式有如下兩種 char a abc 該操作初始化陣列的大小為4,其中元素分別為 a b c 0 若用printf s n a 輸出為abc char a 3 abc 若用printf s n a 輸出會產生非預期的結果,在處理的時候編譯器沒有為a的末尾新增 0 作為結束符 所以一...
C語言中關於字元陣列和指標陣列
做筆試題目的時候,碰到字元陣列初始化的問題,居然一下子懵了。在c語言中儲存字串有兩種方法 字元陣列和字串指標 這兩者的儲存位置不同,首先字元陣列 區域性變數 是儲存在棧中的 指標指向字串時,則包括了兩部分,指標本身,儲存在棧中 區域性指標變數 字串本身儲存在 段 gcc中是這樣 基於上面一點就會產生...
c語言指標與字元陣列
歡迎關注awp資訊 我們所說的字串就是字元陣列的一種,就如我們常見的 hello world 字串的使用在c語言中也是非常重要的,常常會遇到一些操作,如字串的修改 拷貝 字串長度等,在物聯網的應用中也尤為突出,物聯網應用中所用的模組,大多是需要使用at指令的,這就需要對字串的操作。在字元陣列或字串的...