C語言中字元指標與字元陣列的區別

2021-09-12 08:17:35 字數 2097 閱讀 7176

**:

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指令的,這就需要對字串的操作。在字元陣列或字串的...