您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“C++中字符和字符串及數(shù)組還有指針之間存在哪些關(guān)系”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++中字符和字符串及數(shù)組還有指針之間存在哪些關(guān)系”這篇文章吧。
字符串指針變量本身是一個(gè)變量,用于存放字符串的首地址。而字符串本身是存放在以該首地址為首的一塊連續(xù)的內(nèi)存空間中并以\0作為串的結(jié)束。
1、*a只是指向一個(gè)字符。
舉例如下:
實(shí)例
#include
#include
intmain(void){
char*a="bcd";
printf("輸出字符:%c\n",*a);/*輸出字符,使用"%c"*/
printf("輸出字符:%c\n",*(a+1));/*輸出字符,使用"%c"*/
printf("輸出字符串:%s\n",a);/*輸出字符串,使用"%s";而且a之前不能有星號(hào)"*"*/
system("pause");/*為了能看到輸出結(jié)果*/
}
運(yùn)行結(jié)果如下:
輸出字符:b
輸出字符:c
輸出字符串:bcd
2、若字符串常量出現(xiàn)在在表達(dá)式中,代表的值為該字符串常量的第一個(gè)字符的地址。所以hello僅僅代表的是其地址。原聲明方式相當(dāng)于以下聲明方式:
char*a;
a="hello";/*這里字符串"hello"僅僅代表其第一個(gè)字符的地址*/
字符數(shù)組是由于若干個(gè)數(shù)組元素組成的,它可用來(lái)存放整個(gè)字符串。(即用字符數(shù)組來(lái)存放字符串)。
在C語(yǔ)言中,將字符串作為字符數(shù)組來(lái)處理。(C++中不是)
1).可以用字符串常量來(lái)初始化字符數(shù)組:
charstr[]={"Iamhappy"};
可以省略花括號(hào)
charstr[]="Iamhappy";#系統(tǒng)自動(dòng)加入\0
注意:上述這種字符數(shù)組的整體賦值只能在字符數(shù)組初始化時(shí)使用,不能用于字符數(shù)組的賦值,字符數(shù)組的賦值只能對(duì)其元素一一賦值。
下面的賦值方法是錯(cuò)誤的:
charstr[20];
str="Iamhappy";
對(duì)字符數(shù)組的各元素逐個(gè)賦值。
charstr[10]={'I','','a','m','','h','a','p','p','y'};
?。?)用字符數(shù)組存放一個(gè)字符串
charstr[]="IloveChina";
(2)用字符指針指向一個(gè)字符串
char*str="IloveChina";
兩種表示方式的字符串輸出都用:printf("%s\n",str);
%s表示輸出一個(gè)字符串,給出字符指針變量名str(對(duì)于第一種表示方法,字符數(shù)組名即是字符數(shù)組的首地址,與第二種中的指針意義是一致的),則系統(tǒng)先輸出它所指向的一個(gè)字符數(shù)據(jù),然后自動(dòng)使str自動(dòng)加1,使之指向下一個(gè)字符...,如此,直到遇到字符串結(jié)束標(biāo)識(shí)符\0。
char*argv:理解為字符串
char**argv:理解為字符串指針
char*argv[]:字符串指針數(shù)組
intmain(intargc,char*argv[])這是一個(gè)典型的數(shù)組名(或者說(shuō)是指針數(shù)組)做函數(shù)參數(shù)的例子,而且還是沒(méi)有指定大小的形參數(shù)組。
有時(shí)為了再被調(diào)用函數(shù)中處理數(shù)組元素的需要,可以另設(shè)一個(gè)形參,傳遞需要處理的數(shù)組元素的個(gè)數(shù)。而且用數(shù)組名做函數(shù)實(shí)參時(shí),不是吧數(shù)組元素的值傳遞給形參,而是把實(shí)參數(shù)組的首元素的地址傳遞給形參數(shù)組,這樣兩個(gè)數(shù)組久共同占有同一內(nèi)存單元。和變量作函數(shù)參數(shù)的作用不一樣。
以上是“C++中字符和字符串及數(shù)組還有指針之間存在哪些關(guān)系”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。