色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式招聘 > 嵌入式面試題 > 千家公司嵌入式面試題,都是比較常見的

千家公司嵌入式面試題,都是比較常見的 時(shí)間:2018-08-10      來源:未知

關(guān)鍵字static的作用是什么?

這個簡單的問題很少有人能回答完全。在C語言中,關(guān)鍵字static有三個明顯的作用:

1). 在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。

2). 在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。

3). 在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。

--------------------------------------------------------------------------

Const

關(guān)鍵字const是什么含意?

我只要一聽到被面試者說:“const意味著常數(shù)”,我就知道我正在和一個業(yè)余者打交道。去年Dan Saks已經(jīng)在他的文章里完全概括了const的所有用法,因此ESP(譯者:Embedded Systems Programming)的每一位讀者應(yīng)該非常熟悉const能做什么和不能做什么.

如果你從沒有讀到那篇文章,只要能說出const意味著“只讀”就可以了。盡管這個答案不是完全的答案,但我接受它作為一個正確的答案。(如果你想知道更詳細(xì)的答案,仔細(xì)讀一下Saks的文章吧。)如果應(yīng)試者能正確回答這個問題,我將問他一個附加的問題:下面的聲明都是什么意思?

Const int a;

int const a;

const int *a;

int * const a;

int const * a const;

前兩個的作用是一樣,a是一個常整型數(shù)。第三個意味著a是一個指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個意思a是一個指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)。如果應(yīng)試者能正確回答這些問題,那么他就給我留下了一個好印象。順帶提一句,也許你可能會問,即使不用關(guān)鍵字const,也還是能很容易寫出功能正確的程序,那么我為什么還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:

1). 關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個參數(shù)為常量是為了告訴了用戶這個參數(shù)的應(yīng)用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會很快學(xué)會感謝這點(diǎn)多余的信息。(當(dāng)然,懂得用const的程序員很少會留下的垃圾讓別人來清理的。)

2). 通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。

3). 合理地使用關(guān)鍵字const可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現(xiàn)。

----------------------------------------------------------

main()

{

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1); //ptr實(shí)際是&(a[5]),也就是a+5

printf("%d,%d",*(a+1),*(ptr-1));

}

輸出:2,5

------------------------------------------------------------------------

編寫strcat函數(shù)(6分)

已知strcat函數(shù)的原型是char *strcat (char *strDest, const char *strSrc);

其中strDest 是目的字符串,strSrc 是源字符串。

(1)不調(diào)用C++/C 的字符串庫函數(shù),請編寫函數(shù) strcat

答:

VC源碼:

char * __cdecl strcat (char * dst, const char * src)

{

char * cp = dst;

while( *cp )

cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* Copy src to end of dst */

return( dst ); /* return dst */

}

(2)strcat能把strSrc 的內(nèi)容連接到strDest,為什么還要char * 類型的返回值?

答:方便賦值給其他變量

-----------------------------------------------------------------------------

枚舉:

enum day

{a,b,c,d=5,e,f,g}

問a和g各是多少?

---------------------------------------------------------------------------------

用宏函數(shù)求出一維數(shù)組的長度

#define arraysize(x) (sizeof(x)/sizeof(x[0])) 一維的

#define arraytow(x) arraysize(x[0])*arraysize(x) 二維

-----------------------------------------------------------------------------

嵌入式系統(tǒng)總是要用戶對變量或寄存器進(jìn)行位操作。給定一個整型變量a,寫兩段代碼,第一個設(shè)置a的bit 3,第二個清除a 的bit 3。在以上兩個操作中,要保持其它位不變。

#define BIT3 (0x1<<3)

static int a;

void set_bit3(void)

{

a |= BIT3;

}

void clear_bit3(void)

{

a &= ~BIT3;

}

----------------------------------------------------------------------------------------------------------------

下面的代碼輸出是什么,為什么?

Void foo(void)

{

unsigned int a = 6;

int b = -20;

(a+b > 6) puts("> 6") : puts("<= 6");

}

: >6

---------------------------------------------------------------------------------------------------------

int a=5,b=7,c;

c=a+++b;

代碼執(zhí)行后

a=6

b=7

c=12

------------------------------------------------------------------

用變量a給出下面的定義

a) 一個整型數(shù)(An integer)

b) 一個指向整型數(shù)的指針(A pointer to an integer)

c) 一個指向指針的的指針,它指向的指針是指向一個整型數(shù)(A pointer to a pointer to an integer)

d) 一個有10個整型數(shù)的數(shù)組(An array of 10 integers)

e) 一個有10個指針的數(shù)組,該指針是指向一個整型數(shù)的(An array of 10 pointers to integers)

f) 一個指向有10個整型數(shù)數(shù)組的指針(A pointer to an array of 10 integers)

g) 一個指向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)(A pointer to a function that takes an integer as an argument and returns an integer)

h) 一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)( An array of ten pointers to functions that take an integer argument and return an integer )

答案是:

a) int a; // An integer

b) int *a; // A pointer to an integer

c) int **a; // A pointer to a pointer to an integer

d) int a[10]; // An array of 10 integers

e) int *a[10]; // An array of 10 pointers to integers

f) int (*a)[10]; // A pointer to an array of 10 integers

g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer

h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

================================================================================================================

上一篇:嵌入式面試基本問題,各個都經(jīng)典

下一篇:匯集各大型公司面試題,嵌入式學(xué)習(xí)者必看

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 精品无码一区二区三区av | 日本欧美一区二区三区乱码 | 免费国产黄线在线观看 | 欧美性大战xxxxx久久久 | 亚洲成A∧人片在线播放黑人 | 依依成人精品视频在线观看 | 天堂久久天堂AV色综合 | 热久色 | 日韩精品无码区免费专区 | 最好看的中文字幕第一页在线 | 欧美z0zo人禽交 | mm1313亚洲精品无码又大又粗 | 国产高潮流白浆啊免费A片动态 | 亚洲色大成网站www尤物 | 未禁18成禁人免费无遮挡 | 亚洲午夜理论片在线观看 | 韩国精品一区二区三区四区 | 国产精品人成视频免费播放 | 久久香蕉成人免费大片 | 国语高清videossex | 色悠悠久久综合 | 亚洲午夜未满十八勿入网站2 | 久久国产日韩精华液的功效 | 久久大香香蕉国产拍国 | 日本大片免a费观看视频 | 人妻精品丝袜一区二区无码av | 久久综合久久鬼色 | 成人区人妻精品一区二区不卡视频 | 亚洲综合另类小说专区 | 免费欧洲毛片A级视频老妇女 | 亚洲男同GV片在线观看 | 午夜精品久久久内射近拍高清 | av影音先锋天堂网 | 欧美日韩视频在线一区二区三区 | 国产成人免费高清AV | 欧美国产成人激情视频在线观看 | 无码国产精品一区二区免费VR | 国产精品无卡毛片视频 | 亚洲AV永久无码国产精品久久 | 亚洲日韩成人无码 | 国产乱子伦视频在线播放 |