作者 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)。
轉(zhuǎn)載請(qǐng)注明出處。
原文:http://www.itdecent.cn/p/30d4754ea2b7
內(nèi)容簡(jiǎn)介
- 前言
- 練習(xí)題
- 練習(xí)題答案
- 習(xí)作
- 第三部分第一課預(yù)告
1. 前言
上一課和上上一課我們完成了一個(gè)游戲:
這一課我們來(lái)做一些練習(xí)題,還有一個(gè)小的習(xí)作。
這些練習(xí)題是幫助大家鞏固知識(shí)的,其實(shí)不難。不看答案來(lái)完成這 15 道題目吧,都是單選題。
2. 練習(xí)題
1.什么是全局變量?
A. 可以在隨處被訪問(wèn)的變量
B. 變量類(lèi)型任意的變量
C. 聲明在 main 函數(shù)里的變量
2.當(dāng)我們引入標(biāo)準(zhǔn)庫(kù)的頭文件,使用類(lèi)似如下的哪一種方式?
A. #include <time.h>
B. #include "time.h"
C. #include {time.h}
D. #include [time.h]
3.C語(yǔ)言的編譯按如下那種順序進(jìn)行?(這里其實(shí)省略了一步:匯編(用到匯編器,就不贅述了))
A. 預(yù)處理 -> 編譯 -> 鏈接
B. 編譯 -> 鏈接 -> 預(yù)處理
C. 鏈接 -> 預(yù)處理 -> 編譯
D. 預(yù)處理 -> 鏈接 -> 編譯
4.如果我寫(xiě) &variable,我得到的是什么?
A. variable 的地址
B. variable 的值
C. variable 指向的變量的值
5.我們用什么值來(lái)初始化指針?
A. NOTHING
B. 1
C. NULL
D. MAIN
E. 0_ADDRESS
6.有代碼如下:
int number = 8;
int *pointer = &number;
假設(shè) number 位于內(nèi)存地址 5000 處,而 pointer 這個(gè)指針位于內(nèi)存地址 2500 處,那么如果在接下來(lái)的程序中打印 *pointer 的值,是什么呢?
A. 5000
B. 2500
C. 8
D. 無(wú)可預(yù)知
7.數(shù)組的下標(biāo)從幾開(kāi)始?
A. 0
B. 1
C. -1
8.下面哪行代碼是用于創(chuàng)建有 10 個(gè) double 變量的數(shù)組?
A. double *array[10];
B. double array{10};
C. double array[10];
D. double array[9];
9.以下程序有一個(gè)錯(cuò)誤,是哪一個(gè)?
int main(int argc, char *argv[])
{
char city[100];
printf("請(qǐng)問(wèn)您住在哪個(gè)城市 ? ");
scanf("%s", &city);
printf("您住在 %s, 這個(gè)城市我很熟悉 !", city);
return 0;
}
A. 第二個(gè) printf 中的 city 前少了 & 號(hào)
B. 在 city 數(shù)組的定義中,city 前少了 * 號(hào)
C. 在 scanf 的 city 前多了 & 號(hào)
10.哪一個(gè)預(yù)處理命令表明 #if 的結(jié)束?
A. #elif
B. #endif
C. #ifdef
D. #ifndef
11.結(jié)構(gòu)體里面可以包含數(shù)組嗎?
A. 可以
B. 不可以
C. 可以,但僅當(dāng)數(shù)組都是同一種類(lèi)型時(shí)
12.為什么通常我們更喜歡用一個(gè)函數(shù)來(lái)初始化結(jié)構(gòu)體?
A. 一旦結(jié)構(gòu)體做了修改,我們不需要在程序中重做此結(jié)構(gòu)體的所有初始化
B. 對(duì)電腦來(lái)說(shuō),這樣速度更快
C. 這可以把我的代碼變成 C++ 形式的
13.在打開(kāi)一個(gè)文件后總是應(yīng)該做什么事情?
A. 關(guān)閉文件
B. 測(cè)試文件指針的有效性
C. 清空文件內(nèi)容
D. 把光標(biāo)放在文件首位置
14.如下代碼有什么作用?
malloc(sizeof(int) * 25);
A. 在內(nèi)存中申請(qǐng)一個(gè) 25 字節(jié)的 int 型變量
B. 在內(nèi)存中申請(qǐng)一個(gè) int 型數(shù)組,數(shù)組包含 25 個(gè)元素
C. 在內(nèi)存中申請(qǐng)一個(gè) 25 字節(jié)的 float 型變量
D. 在內(nèi)存中申請(qǐng)一個(gè) float 型數(shù)組,數(shù)組包含 25 個(gè)元素
15.什么是緩沖區(qū)溢出?
A. 存儲(chǔ)的字符串超出了緩沖區(qū)的最大容量
B. 在讀緩沖區(qū)時(shí)進(jìn)入了死循環(huán)
C. 當(dāng)我們丟失一個(gè)指向字符串的指針時(shí)造成的內(nèi)存泄露
3. 練習(xí)題答案
- A
- A
- A
- A
- C
- C
- A
- C
- C
- B
- A
- A
- B
- B
- A
4. 習(xí)作
《用自己的語(yǔ)言解釋指針》
總是我說(shuō),可能有點(diǎn)嘮叨。這回?fù)Q聽(tīng)官們說(shuō)說(shuō)唄。
指針是 C語(yǔ)言的精華,也是 C語(yǔ)言之所以很靈活強(qiáng)大且具有陷阱的原因。
如果學(xué)習(xí) C語(yǔ)言,不理解指針,那就沒(méi)掌握精髓。
所以在本次的“習(xí)作”中,我們要求你用自己的語(yǔ)言來(lái)解釋指針,看看大家理解得如何。
如果記不太清楚了,請(qǐng)大家復(fù)習(xí)我們之前關(guān)于指針的那一課:C語(yǔ)言探索之旅 | 第二部分第二課:進(jìn)擊的指針,C語(yǔ)言的王牌!
將你的解釋發(fā)在留言中即可。
不要一上來(lái)就長(zhǎng)篇大論,先捋一捋一些指針的基本概念會(huì)更好。
即使你不留言,也請(qǐng)自己多看看指針的知識(shí)點(diǎn),可以閱讀《C和指針》,《C專(zhuān)家編程》,《C語(yǔ)言深度解剖》等書(shū)。
5. 第三部分第一課預(yù)告
今天的課就到這里,一起加油吧!
我是 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)運(yùn)營(yíng)者,慕課網(wǎng)精英講師 Oscar 老師,終生學(xué)習(xí)者。
熱愛(ài)生活,喜歡游泳,略懂烹飪。
人生格言:「向著標(biāo)桿直跑」