??? ???🔥🔥 歡迎來到小林的博客!!
公司專注于為企業(yè)提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站、微信公眾號開發(fā)、商城網(wǎng)站制作,成都小程序開發(fā),軟件按需規(guī)劃網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)建站更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
??????🛰?博客主頁:??小林愛敲代碼
??????🛰?專欄:??C語言快速入門
??????🛰?歡迎關(guān)注:👍點贊🙌收藏??留言
??????今天給大家分享C語言中字符串,轉(zhuǎn)義字符,和選擇語句這一塊內(nèi)容,讓大家在學(xué)習(xí)的路上更加輕松。感謝大家對我的支持,祝大家學(xué)業(yè)有成,事業(yè)有成 !
??
??????每日一句: 只有不斷的努力,才能成為夢想中的自己!
大綱:
目錄💖4.2 字符串定義
"abcdefg"
這種由雙引號(Double Quote)引起來的一串字符稱為字符串字面(String Literal),或者簡稱字符串。字符串的結(jié)束標(biāo)志是一個 \0 的轉(zhuǎn)義字符。在計算字符串長度的時候 \0 是結(jié)束標(biāo)志,不算作字符串內(nèi)容。
"char a[] = "abcde"
這種方法,末尾會自動追加\0"char a[] = {'a','b','c','d','e','\0'}
這種方法,需要手動追加\0,否則字符串會沒有結(jié)束標(biāo)志。"char a[20] = {'a','b','c','d','e'}
這種方法,定義了長度為20,那么后面長度不足部分會自動補(bǔ)\0,所以也是可以的。
接下來我們試一下
#includeint main()
{char a[] = "abcde";
char b[] = {'a','b','c','d','e','\0' };
char c[20] = {'a','b','c','d','e' };
printf("a = %s\n", a);
printf("b = %s\n", b);
printf("c = %s\n", c);
return 0;
}
這些都是可以的,但是如果在沒有限制的長度的情況下,b是一定要加\0的,否則字符串沒有結(jié)束標(biāo)志,會非法訪問后面的內(nèi)容。
字符串沒有結(jié)束標(biāo)志,就會訪問隨即內(nèi)容。
字符串長度是從第一個字符開始,到\0停止,不包括\0。
char a[] = "abcde"; //從a開始,到e后一個\0結(jié)束,長度5
char b[] = {'a','b','c','d','e','\0'};//從a開始,到\0結(jié)束,不包括\0,長度5
char c[20] = {'a','b','c','d','e' };//一樣,長度5
有一個strlen函數(shù),可以獲取一個字符串的長度,我們只需要引入string.h庫,即可使用。
#include#includeint main()
{char a[] = "abcde";
char b[] = {'a','b','c','d','e','\0'};
char c[20] = {'a','b','c','d','e' };
printf("lena = %d\n", strlen(a));
printf("lenb = %d\n", strlen(b));
printf("lenc = %d\n", strlen(c));
return 0;
}
我們發(fā)現(xiàn)長度都是5,因為后面都有\(zhòng)0作為結(jié)束標(biāo)志,但如果我們把b的\0去掉,那么 b的長度就變成了隨機(jī)值。
所以字符串的長度是從第一個字符開始,到\0結(jié)束,其中不包括\0。
字符串的大小就是它開辟了多少空間,那么大小就是多少。如果定義時沒有明確數(shù)組開辟多少空間,那么按數(shù)組元素個數(shù)計算大小。
char a[] = "abcde"; //包括\0 , 6個字節(jié)
char b[] = {'a','b','c','d','e'}; //5個字節(jié),元素個數(shù)
char c[20] = {'a','b','c','d','e' };//有明確開辟20個空間大小,20字節(jié)
sizeof是一個關(guān)鍵字,會返回變量占用空間的大小。
轉(zhuǎn)義字符 | 釋義 |
---|---|
\?(不常用) | 在書寫連續(xù)多個問號時使用,防止他們被解析成三字母詞 |
\’ | 用于表示字符常量’ |
\“ | 用于表示一個字符內(nèi)部的雙引號 |
\\ | 用于表示一個反斜杠,防止它被解釋為一個轉(zhuǎn)義序列符 |
\a | 警告字符,蜂鳴 |
\b | 退格字符 |
\f | 進(jìn)紙符 |
換行符 | |
\r | 回車 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3個八進(jìn)制的數(shù)字。 如: \130 X |
\xdd | dd表示2個十六進(jìn)制數(shù)字。 如: \x30 0 |
接下來演示幾個轉(zhuǎn)義字符。
#includeint main()
{printf("ABCD\b\n"); //退格+回車,輸出ABC換行
printf("ABCD\\\n ");// \加換行,輸出ABCD\換行
printf("%d\n",'\010'); //表示8進(jìn)制的123,輸出8回車
printf("%d\n", '\x10');//16進(jìn)制的ff,16回車
return 0;
}
注意!所有的轉(zhuǎn)義字符,它都只占一個字節(jié)。因為轉(zhuǎn)義字符歸根結(jié)底還是字符!字符占1個字節(jié)。
🏀5.2 if單分支人無時無刻都在做選擇,程序也需要做選擇。當(dāng)我們期望程序達(dá)到某個條件時,就做出不同的選擇時。我們就需要選擇語句,來控制程序走哪條路。
簡單來說,單分支就是你要不要選擇這條路。最終的終點是一樣的,但中間會不會有小插曲,取決于你的選擇。
假如你現(xiàn)在放學(xué)了,你可以直接回家。但你也可以選擇先去網(wǎng)吧,再回家,而去網(wǎng)吧的這個過程就是你中間的選擇。
但是你要去網(wǎng)吧,必須要有個條件,當(dāng)滿足了什么條件時,你才會選擇去網(wǎng)吧。如果此時你身上有超過五塊錢時,先去網(wǎng)吧,再回家。
所以我們可以用程序來模擬上面的過程。
#includeint main()
{int money = 6; //你身上的錢
if (money >5) //如果你身上的錢超過5塊
{//去網(wǎng)吧
printf("去網(wǎng)吧->");
}
//不管如何,你都要回家
printf("回家");
return 0;
}
此時我有6塊錢,所以可以去網(wǎng)吧。
但如果我們把 money改成小于5呢? 錢不夠了,那就不能去網(wǎng)吧了。只能直接回家了。
那么這時候問題來了,你錢不夠,去不了網(wǎng)吧。又不想馬上回家,必須要買點東西彌補(bǔ)一下去不了網(wǎng)吧的遺憾。這時就可以用雙分支。
因為你不想立刻回家,必須做點事情才回家,那么就沒有直接回家這條選項了。
用程序模擬
#includeint main()
{int money = 4; //你身上的錢
if (money >5) //如果你身上的錢超過5塊
{//去網(wǎng)吧
printf("去網(wǎng)吧->");
}
else //錢不夠,就跳到這來
{printf("去買棒棒糖->");
}
//不管如何,你都要回家
printf("回家");
return 0;
}
當(dāng)你只有4塊錢時
當(dāng)你有6塊錢時
那么這時候你又有要求了。 如果身上的錢超過20塊,就去游泳,如果不超過20塊錢,但是超過10塊錢,就去吃肯德基。如果不超過10塊錢,但是超過5塊錢,就去網(wǎng)吧。五塊錢都沒有,那就只能吃棒棒糖了。最后再回家。
那么我們就else if
#includeint main()
{int money = 6; //你身上的錢
if (money >20) //如果你身上的錢超過20塊
{//去游泳
printf("去游泳->");
}
else if(money >10)//錢不夠20,但是超過10塊
{printf("去吃肯德基->");
}
else if (money >5)//錢不夠10塊,但是超過5塊
{printf("去網(wǎng)吧->");
}
else
{printf("去買棒棒糖->"); //五塊錢都沒有
}
//不管如何,你都要回家
printf("回家");
return 0;
}
21塊錢的結(jié)果
11塊錢的結(jié)果
6塊錢的結(jié)果
4塊錢的結(jié)果
switch 分支也是多分支,跟 if else的功能是一樣的。只不過在某種特定情況,用switch分支會比 if else分支更加直觀,更加方便。
假設(shè) 你想制定一個計劃表,從周一到周日。每一天都做不同的事情。這種情況用 if else會顯得很雜亂,代碼可讀性并不是很好。
if else的寫法
#includeint main()
{int weekday = 1; //星期數(shù)
if (weekday == 1)
{printf("跑步");
}
else if (weekday == 2)
{printf("爬山");
}
else if (weekday == 3)
{printf("游泳");
}
else if (weekday == 4)
{printf("打游戲");
}
else if (weekday == 5)
{printf("打籃球");
}
else if (weekday == 6)
{printf("踢足球");
}
else if (weekday == 7)
{printf("寫作業(yè)");
}
return 0;
}
這種頻繁的 if else ,看的讓人眼花繚亂。 所以在這里推薦用switch分支!!
switch分支的寫法
#includeint main()
{int weekday = 1; //星期數(shù)
switch (weekday)//weekday是要匹配的值
{//如果weekday = 1,那么會走這條語句的內(nèi)容
case 1: printf("跑步");
break;
//如果weekday = 2,那么會走這條語句的內(nèi)容
case 2: printf("爬山");
break;
//如果weekday = 3,那么會走這條語句的內(nèi)容
case 3: printf("游泳");
break;
//如果weekday = 4,那么會走這條語句的內(nèi)容
case 4: printf("打游戲");
break;
//如果weekday = 5,那么會走這條語句的內(nèi)容
case 5: printf("打籃球");
break;
//如果weekday = 6,那么會走這條語句的內(nèi)容
case 6: printf("踢足球");
break;
//如果weekday = 7,那么會走這條語句的內(nèi)容
case 7: printf("寫作業(yè)");
break;
//如果上面都不滿足,那么會執(zhí)行這一條
default:
printf("星期數(shù)不存在");
break;
}
return 0;
}
注意!每條case分支必須要加上break語句,否則會接著執(zhí)行下一條語句。假設(shè)我把case1,和case2的break刪掉。
我們會發(fā)現(xiàn)它會接著往下執(zhí)行,直到遇到break才結(jié)束。
💦💦如果有寫的有什么不好的地方,希望大家指證出來,我會不斷的改正自己的錯誤。💯💯如果感覺寫的還可以,可以點贊三連一波哦~🍸🍸后續(xù)會持續(xù)為大家更新大綱上的內(nèi)容,以及數(shù)據(jù)結(jié)構(gòu),C++等方面的知識
🔥🔥你們的支持是我大的動力,希望在往后的日子里,我們大家一起進(jìn)步?。?!🔥🔥
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧