C語言
一
哨兵字符:出現(xiàn)在字符串末尾的附加字符,他的值為\0,占用一個字符位置,作為結(jié)尾,在此處停止。
1.為什么字符從0開始編號,不是1?
答:字符的索引值是一個偏移量,它表示的是要引用的這個字符到數(shù)組第一個字符中間有多少字符
2.為什么要這樣做?
答:因為計算機在存儲器中以連續(xù)字節(jié)的形式保存字符,并利用索引計算出字符在存儲器中的位置。假如計算機知道c【0】位于存儲器10號單元,那么c【3】就可以很快計算出在10+3這個單元。
3.哨兵字符的意義?
答:C語言是比較的底層的語言,他通常不知道字符串的長度,字符串是個數(shù)組。
4.C語言知道數(shù)組的的長度嗎?
答:不知道。通過編譯器分析代碼來計算出數(shù)組的長度。
5.單、雙引號的區(qū)別?
答:單引號通常用來表示單個字符,雙引號通常用來表示字符串
6.用雙引號定義字符串,還是以顯式字符數(shù)組的形式定義字符串?字符串字面值和字符數(shù)組的區(qū)別?
答:通常應該用雙引號來定義字符串。用雙引號定義的字符串叫字符串字面值(string literal),比起字符數(shù)組,它輸入起來也更方便。
區(qū)別:字符串字面值是常量。
二 指針和存儲器
指針:就是存儲器中某條數(shù)據(jù)的地址
指針讀寫數(shù)據(jù)
a.得到變量的地址
1.%p:獲得地址以16進制輸出
2.&x:找到變量在存儲器中的位置
3.指針變量:保存存儲器地址的變量
int *address_of_x=&x;(這是一個指針變量,它保存的是一個地址)
b.讀取地址中的內(nèi)容
有了存儲器地址,讀取數(shù)據(jù): int value_stored=*address_of_x;
*:保存地址,讀取數(shù)據(jù)
&:接收數(shù)據(jù),讀取數(shù)據(jù)的地址
三 循環(huán)語句
1.Switch語句:有限次條件中的判斷,判斷某個具體的數(shù)值,而非判斷條件來做出下一步選擇。
switch case break,遇到break立即退出,漏掉break會讓代碼出錯,在每個case后面跟break,這樣即使會損失效率,但能提升可讀性。
2.While語句:最基本的循環(huán)結(jié)構,只要條件為真,while就會一直運行代碼。
? ?Do while語句:做出一個行為之后再進行循環(huán)。
int counter = 1;(這是循環(huán)啟動代碼)
while (counter < 11) {(這是循環(huán)條件)
printf("%i個棗\n", counter);
counter++;(這是循環(huán)更新代碼,它用來在循環(huán)體的末尾更新計數(shù)器)
3.For循環(huán)語句:
int counter;
for (counter = 1; counter < 11; counter++) { ?(初始化循環(huán)變量;每次循環(huán)執(zhí)行前對條件
進行檢查的代碼;每次循環(huán)后運行的代碼)
printf("%i個棗\n", counter);
break語句:可以用來退出循環(huán)語句和switch語句,break不能從if