黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實(shí)例解析字符串?dāng)?shù)組

實(shí)例解析字符串?dāng)?shù)組

更新時(shí)間:2020-11-05 17:44:34 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1386次

字符串?dāng)?shù)組其實(shí)算是指針數(shù)組的一類,其本身有著數(shù)組的特征,但在某些方面也和一般的數(shù)組有著區(qū)別,本文我們就來探究字符串?dāng)?shù)組的奧秘。


char* str1內(nèi)存放的是字符串的指針,指向了一個(gè)地址而char str2則是在棧中開辟了50char大小的空間來存放這些字符下面的程序通過初始方式來幫助你理解兩者的不同:

int main() {

char Str1[10] = "Hello";

char Str2[10];

char Str3[10];

char Str4[10];

char Str5[10] = "World";

char* str1[5] = {Str1, Str2, Str3, Str4, Str5};

char str2[5][10] = {

"Hello",//注意寫逗號(hào)

"",

"",

"",

"World"};

str1[1] = " Goodbye";

//str2[1] = " Goodbye";//報(bào)錯(cuò):表達(dá)式必須是可修改的左值

scanf("%s", str2[1]);

printf("%s", str1[0]);

printf("%s\n", str1[4]);

printf("%s ", str2[0]);

printf("%s\n", str2[4]);

return 0;

}


字符串?dāng)?shù)組的一個(gè)應(yīng)用寫一個(gè)程序。輸入一個(gè)數(shù)代表月份,輸出這個(gè)月的英語單詞。我們可以用 if else 來做也可以用 switch 來做。但是今天學(xué)習(xí)了字符串?dāng)?shù)組,我們有了更簡(jiǎn)單的方式來完成。請(qǐng)看下面的程序:int main() {

char* str[12] = { "January", "February", "March", "April", "May", "June",

"July", "August", "September", "October", "November", "Decenmber",

};

int month = 0;

while (1) {

printf("input a month\n");

scanf("%d", &month);

if (month >= 1 && month <= 12)

printf("%s\n", str[month - 1]);

else

printf("invalid input\n");

}

return 0;

}


這樣寫代碼被大大縮短了。

我們知道定義一個(gè)數(shù)組時(shí)需要為其指定相應(yīng)的變量類型。也就是說,定義了數(shù)組的類型之后這個(gè)數(shù)組中的所有變量就都是相同的類型。現(xiàn)在我們就來定義一個(gè)字符弄型的數(shù)組,如下:char hello[5] = {'H','e','l','l','o'};


這樣我們就定義了一個(gè)字符型的數(shù)組,對(duì)于數(shù)組型的變量這樣定義是沒有問題的,但有兩個(gè)方面的不足:

1. 定義的過程比較麻煩,在數(shù)組變量初始化時(shí)需要逐個(gè)寫出每一個(gè)字符,并在這每一個(gè)字符的兩端加上一對(duì)單引號(hào)。

2. 在顯示字符數(shù)組時(shí),我們通常希望能夠讓其一次性的顯示出來,而不是通過循環(huán)數(shù)組的方式逐個(gè)顯示這些字符。

例如上面定義的數(shù)組我們想要用printf將其顯示出來我們則需要通過循環(huán)的方式:

char hello[5] = {'H','e','l','l','o'};

for (int i = 0; i < 5; i++)

{

printf("%c", hello[i]);

}

Hello

其實(shí),在C語言中支持直接定義字符串的方式來為定義字符數(shù)組,例如:

char hello[6] = "Hello";

printf("%s", hello);

Hello


注意,我們?cè)诙x這個(gè)數(shù)組時(shí),指定數(shù)組的大小為6,也就是說需要申請(qǐng)6個(gè)字節(jié)的存儲(chǔ)空間,而在等號(hào)右側(cè)的雙引號(hào)中我們卻只書寫了5個(gè)字符。這并不是筆誤,C語言規(guī)定當(dāng)使用雙引號(hào)定義字符串時(shí)以'\0'作為這個(gè)字符串的結(jié)束標(biāo)志符,也就是說這個(gè)字符串一共有6個(gè)字符,分別是'H'、'e'、'l'、'l'、'o'、'\0'。關(guān)于\0讀者只需要知道這是一個(gè)特殊的字符即可,它表示字符串的結(jié)束,它的值為0。這樣我們就可以通過printf函數(shù)將這個(gè)字符串直接打印出來。需要注意的是,當(dāng)使用printf來顯示字符串時(shí),我們要確保這個(gè)字符串變量中最后一個(gè)結(jié)束字符為\0,如果結(jié)束字符不是\0則printf在顯示這個(gè)字符串時(shí),就不知道顯示到何處結(jié)束,例如char hello[5] = "Hello";

printf("%s", hello);

Hello#@($0948#."


也就是說,我們雖然定義了一個(gè)字符串,但只定義了5個(gè)字符的長(zhǎng)度,而使用雙引號(hào)為其初始化時(shí),這個(gè)字符串的實(shí)際大小應(yīng)該是6因?yàn)橐芳右粋€(gè)\0,但我們?cè)诙x數(shù)組大小時(shí)只指定其大小是5所以這個(gè)數(shù)組中的中只有5個(gè)元素分別是'H'、'e'、'l'、'l'、'o'。而在'o'之后并沒有'\0',所以在printf顯示這個(gè)字符串時(shí),顯示 Hello之后,并不知道何時(shí)結(jié)束,所以就會(huì)繼續(xù)顯示,直到遇到一個(gè)'\0'為止,于是我們程序就出現(xiàn)了非預(yù)期的結(jié)果。這樣的程序并不是我們提倡的,我們?cè)诙x字符串時(shí)一定要為其多分配一個(gè)字符的長(zhǎng)度,以便存放字符串的結(jié)束符'\0'。當(dāng)然,使用雙引號(hào)定義的字符串可以像使用普通數(shù)組一樣使用其數(shù)組元素例如ABC運(yùn)行結(jié)果可以看到直接顯示字符串和循環(huán)顯示字符數(shù)組中的元素的效果是一樣的。char str[6] = "Hello";

printf("%s\n", str);

for (int i = 0; i < sizeof(str); i++)

{

printf("%c", str[i]);

}

printf("\n");

Hello

Hello

在這里我們使用了另一個(gè)重要函數(shù)sizeof(),它的作用是可以計(jì)算出某一個(gè)變量或類型的大小,就是占用的內(nèi)存字節(jié)數(shù),例如:

char ch;

short sh;

int i;

printf("%d %d %d %d %d\n",

sizeof(ch),

sizeof(sh),

sizeof(i),

sizeof(long),

sizeof(long long));

1 2 4 8 8

請(qǐng)注意,long類型的變量在不同的操作系統(tǒng)下占用字節(jié)數(shù)可能不同,請(qǐng)參數(shù)參見《變量大小》。另外在使用sizeof來計(jì)算數(shù)組大小時(shí),計(jì)算的是數(shù)組一共占用內(nèi)存的字節(jié)數(shù),而不是數(shù)組的元素元素的個(gè)數(shù),例如:

int array[4];

printf("%d\n", sizeof(array));

上面例子的結(jié)果是16而不是4。


關(guān)于字符串?dāng)?shù)組的知識(shí)就介紹到這里,總的來說我們想要掌握字符串?dāng)?shù)組不僅要學(xué)好字符串,同時(shí)也要精通數(shù)組的相關(guān)知識(shí),這些都可以在本站的Java基礎(chǔ)教程中學(xué)習(xí),只有肯下功夫,鉆研透教程中的重點(diǎn)內(nèi)容,一定能夠打好Java基礎(chǔ)。


提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲日本中文字幕一本 | 天天操天天爽天天射 | 国内精品久久久久久久久野战 | 成人短视频视频在线观看网站 | 久久综合九色综合77 | 性欧美极品xxxx欧美一区二区 | 黄a视频| 国产在线精品一区二区三区 | 中国一级毛片特级毛片 | 黄色免费网站在线观看 | 欧美成人剧情中文字幕 | 免费观看欧美一级特黄 | 日韩影片在线观看 | 国产成人久久综合热 | 波多野结衣视频免费 | 国产天堂网 | 最近的中文字幕在线看 | 91香蕉视频导航 | 日本a天堂 | 男人女人真曰批的视频动态 | 日韩视频免费看 | 在线免费观看黄色大片 | 久久尹人香蕉国产免费天天 | 丝袜国产在线观看 | 香蕉视频网页版 | 成人小视频免费在线观看 | 亚洲一区日韩二区欧美三区 | 免费成人看片 | 一区二区三区在线观看视频 | 精品女同一区二区三区在线观看 | 免费九九视频 | 英国一级黄色片 | 亚洲欧美成aⅴ人在线观看 亚洲欧美成人 | 国产精品视频一 | 免费黄色的网站 | 免费操| 一级片免费网站 | 91这里只有精品 | 日本漫画工囗全彩内番怀孕 | 日韩永久免费视频 | 日本高清在线一区 |