久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3778|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

C語言基本概念及其辨析

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:94349 發(fā)表于 2015-11-10 01:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1.關(guān)鍵字 static 的作用是什么?
在 C 語言中,關(guān)鍵字 static有三個明顯的作用
解析:
a. 在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。
b. 在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它
函數(shù)訪問。它是一個本地的全局變量。
c. 在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲
明它的模塊的本地范圍內(nèi)使用。

2.引用和指針的區(qū)別是什么?
解析:
a. 引用必須被初始化,指針不必。
b. 引用初始化以后不能被改變,指針可以改變所指的對象。
c. 不存在指向空值的引用,但是存在指向空值的指針。

3..h 頭文件中的 ifndef/define/endif 的作用:
解析:
防止該頭文件被重復(fù)引用

4.#include 與 #include "file.h"的區(qū)別?
解析:
前者是從 Standard Library 的路徑尋找和引用 file.h,而后者是從當(dāng)前工作路徑搜尋并引用 file.h

5.全局變量與局部變量在內(nèi)存中的區(qū)別?
解析:
全局變量儲存在靜態(tài)數(shù)據(jù)區(qū),局部變量在堆棧中

6.堆棧溢出一般有什么原因能導(dǎo)致?
解析:
a.沒有回收垃圾資源
b.層次太深的遞歸調(diào)用

7.不能申明為虛函數(shù)的函數(shù)?
解析:
constructor

8.隊列與棧的區(qū)別?
解析:
隊列先進先出,棧后進先出

9.不能做switch()的參數(shù)類型
解析:
Switch的參數(shù)不能為實型

10.局部變量和全局變量能否重名?

解析:
能,局部會屏蔽全局。要用全局變量,需要使用"::"
局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個變量時,會用到同名的局部變量,而不會用到全局變量。

11.如何引用一個已經(jīng)定義過的全局變量?
解析:
可以用引用頭文件的方式,也可以用 extern 關(guān)鍵字
如果用引用頭文件方式來引用某個在頭文件中聲明的全局變量,假定你將那個變量寫錯了,那么在編譯期間會報錯
如果你用 extern 方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。

12.語句 for( ;1 ;)有什么問題?它是什么意思?

解析:
和 while(1)相同,無限循環(huán)

13.程序的內(nèi)存分配?
解析:
一個由 c/C++編譯的程序占用的內(nèi)存分為以下幾個部分:
a.棧區(qū)(stack)—由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)
結(jié)構(gòu)中的棧
b.堆區(qū)(heap)—一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時可能由 OS回收。注意它與數(shù)據(jù)結(jié)
構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表,呵呵
c.全局區(qū)(靜態(tài)區(qū))(static)—全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量
在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后由系統(tǒng)釋放.
d.文字常量區(qū)—常量字符串就是放在這里的。程序結(jié)束后由系統(tǒng)釋放
e.程序代碼區(qū)—存放函數(shù)體的二進制代碼
例子程序
這是一個前輩寫的,非常詳細
//main.cpp
int a=0;   //全局初始化區(qū)
char *p1;   //全局未初始化區(qū)
main()
{
intb;棧
char s[]="abc";   //棧
char*p2;        //棧
char *p3="123456";   //123456\0在常量區(qū),p3 在棧上。
static int c=0;  //全局(靜態(tài))初始化區(qū)
p1 = (char*)malloc(10);
p2 = (char*)malloc(20);   //分配得來得10 和 20 字節(jié)的區(qū)域就在堆區(qū)。
strcpy(p1,"123456");   //123456\0放在常量區(qū),編譯器可能會將它與 p3 所向"123456"優(yōu)化成一
個地方。
}

14.三種基本的數(shù)據(jù)模型?
解析:
按照數(shù)據(jù)結(jié)構(gòu)類型的不同,將數(shù)據(jù)模型劃分為層次模型、網(wǎng)狀模型和關(guān)系模型

15.結(jié)構(gòu)和聯(lián)合有什么區(qū)別?
解析:
a. 結(jié)構(gòu)和聯(lián)合都是由多個不同的數(shù)據(jù)類型成員組成, 但在任何同一時刻,
聯(lián)合中只存放了一個被選中的成員(所有成員共用一塊地址空間),
而結(jié)構(gòu)的所有成員都存在(不同成員的存放地址不同)。
b. 對于聯(lián)合的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對于結(jié)構(gòu)的不同成員賦值是互不影響的

16.描述內(nèi)存分配方式以及它們的區(qū)別?
解析:
a.從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在。例如全局變量,static變量。
b.在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集。
c.從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運行的時候用 malloc 或 new 申請任意多少的內(nèi)存,程序員自己負責(zé)在何時用 free或 delete 釋放內(nèi)存。動態(tài)內(nèi)存的生存期由程序員決定,使用非常靈活,但問題也最多

17.請說出 const 與#define 相比,有何優(yōu)點?
解析:
Const 作用:定義常量、修飾函數(shù)參數(shù)、修飾函數(shù)返回值三個作用。被 Const修飾的東西都受到強制保護,可以預(yù)防意外的變動,能提高程序的健壯性
a.const常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進行類型安全檢查。而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換可能會產(chǎn)生意料不到的錯誤。
b. 有些集成化的調(diào)試工具可以對 const 常量進行調(diào)試,但是不能對宏常量進行調(diào)試

18.分別寫出 BOOL,int,float,指針類型的變量 a 與“零”的比較語句?
解析:
BOOL :    if (!a ) or if(a)
int:    if ( a == 0)
float :   const EXPRESSION EXP =0.000001
if ( a < EXP && a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)

19.如何判斷一段程序是由C編譯程序還是C++編譯程序編譯的?
解析:
#ifdef __cplusplus
cout<<"c++";
#else
cout<<"c";
#endif

20.論述含參數(shù)的宏與函數(shù)的優(yōu)缺點?
解析:         帶參宏                    函數(shù)
處理時間    編譯時                     程序運行時
參數(shù)類型    沒有參數(shù)類型問題     定義實參、形參類型
處理過程    不分配內(nèi)存                分配內(nèi)存
程序長度    變長                         不變
運行速度    不占運行時間            調(diào)用和返回占用時間

21.用兩個棧實現(xiàn)一個隊列的功能?要求給出算法和思路?
解析:
設(shè) 2 個棧為 A,B, 一開始均為空.
入隊:
將新元素 push 入棧 A;
出隊:
(1)判斷棧 B 是否為空;
(2)如果不為空,則將棧 A 中所有元素依次 pop 出并 push 到棧 B;
(3)將棧 B 的棧頂元素 pop 出;
這樣實現(xiàn)的隊列入隊和出隊的平攤復(fù)雜度都還是 O(1), 比上面的幾種方法要好

22.中斷(Interrupts)
解析:
中斷是嵌入式系統(tǒng)中重要的組成部分,這導(dǎo)致了很多編譯開發(fā)商提供一種擴展—讓標(biāo)準(zhǔn) C 支持中斷。具代表事實是,產(chǎn)生了一個新的關(guān)鍵字__interrupt。下面的代碼就使用了__interrupt關(guān)鍵字去定義了一個中斷服務(wù)子程序(ISR),請評論一下這段代碼的。
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf("\nArea = %f", area);
return area;
}
這個函數(shù)有太多的錯誤了,以至讓人不知從何說起了:
1)ISR 不能返回一個值。如果你不懂這個,那么你不會被雇用的。
2) ISR 不能傳遞參數(shù)。如果你沒有看到這一點,你被雇用的機會等同第一項。
3) 在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的寄存器入棧,有些處理器/編譯器就是不允許在ISR 中做浮點運算。此外,ISR 應(yīng)該是短而有效率的,在 ISR 中做浮點運算是不明智的。
4)與第三點一脈相承,printf()經(jīng)常有重入和性能上的問題。如果你丟掉了第三和第四點,我不會太為難你的。不用說,如果你能得到后兩點,那么你的被雇用前景越來越光明了

23.寫一個“標(biāo)準(zhǔn)”宏
解析:
輸入兩個參數(shù),輸出較小的一個:#define MIN(A,B) ((A) < (B))? (A) : (B))
表明 1 年中有多少秒(忽略閏年問題):#define SECONDS_PER_YEAR (60 * 60 * 24 *365)UL
以下是加括號和不加括號的區(qū)別:
#define DOUBLE(x) x+x 與    #defineDOUBLE(x) ((x)+(x))
i = 5*DOUBLE(5); i 為 30  i = 5*DOUBLE(5); i 為50

24. A.c 和 B.c 兩個 c 文件中使用了兩個相同名字的 static變量,編譯的時候會不會有問題?這兩個 static變量會保存到哪里(棧還是堆或者其他的)?
解析:
static 的全局變量,表明這個變量僅在本模塊中有意義,不會影響其他模塊。
他們都放在數(shù)據(jù)區(qū),但是編譯器對他們的命名是不同的。
如果要使變量在其他模塊也有意義的話,需要使用 extern 關(guān)鍵字
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:94349 發(fā)表于 2015-11-10 01:44 | 只看該作者
1.sscanf 和printf
fgets(buf, sizeof(buf), stdin);
scanf(buf, "%d",&hoge);  
sscanf是以行單位對輸入內(nèi)容進行解釋;
scanf("%d", &hoge);scanf是對連續(xù)字符流進行解釋的;
sscanf和fgets配合使用,能夠達到輸入,敲擊回車,連續(xù)輸出值;scanf則達不到這樣的效果。

2.存儲類型修飾符
以下關(guān)鍵字被定義為存儲類型修飾符:
typedef   extern   static  auto   register
但是,只有static才是真正的“指定存儲區(qū)間”關(guān)鍵字
extern使得在其他地方定義的外部變量在本地可見;auto為默認(rèn),無顯示指定的必要;register可以給出編譯器優(yōu)化提示(因為如今的編譯已經(jīng)很先進了,所以這個基本不用),至于typedef,他只是因為可以給編碼帶來便利才被歸納到存儲類型修飾符中來。
回復(fù)

使用道具 舉報

板凳
ID:433680 發(fā)表于 2018-12-24 11:51 | 只看該作者
學(xué)習(xí)了,感謝樓主了!!
回復(fù)

使用道具 舉報

地板
ID:98222 發(fā)表于 2018-12-25 09:07 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

5#
ID:433680 發(fā)表于 2018-12-25 11:49 | 只看該作者
學(xué)習(xí)了,感謝樓主了!!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕av一区二区三区 | 精品一区二区三区四区 | 欧美在线一区二区三区 | 97视频国产 | 日本丰满少妇做爰爽爽 | 日本大尺度床戏揉捏胸 | 欧美一级免费 | 欧美顶级黄色大片免费 | 亚洲激情视频在线观看 | 亚洲精品一二三 | 日韩精品影视 | 午夜精品久久久久久久99 | 丰满少妇高潮无套内谢 | 日本午夜精品 | 国产靠逼视频 | 国产一区二区免费看 | 狠狠做深爱婷婷久久综合一区 | 欧美一级网站 | 中文字幕一区二区三区在线观看 | 日韩av成人在线 | a级片在线免费观看 | 国产中文字幕一区二区 | 欧美日韩在线看 | 亚洲精品视频免费 | 欧美不卡视频 | 超碰97免费 | 中文在线一区 | 久久精品一区二区 | 午夜无遮挡 | 日韩欧美视频在线 | 午夜激情福利视频 | 成年免费视频黄网站在线观看 | 成人在线视频网站 | 日韩视频免费在线观看 | 一区二区不卡 | 四虎影院网站 | 欧洲色综合| www久久久久 | 青草国产 | 成人综合网站 | 天天插天天 |