日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式 c语言 面试题,嵌入式面试题-持续更新

發(fā)布時(shí)間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式 c语言 面试题,嵌入式面试题-持续更新 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.用預(yù)處理指令#define聲明一個(gè)常數(shù),用以表示1年中有多少秒(忽略閏年問(wèn)題)。

#define? SECONDS_PER_YEAR? (60 * 60 * 24 * 365)UL? //最后的UL代表無(wú)符號(hào)整數(shù)。

2.寫(xiě)一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。

#define MIN(x, y) ((x) < (y) ? (x) : (y))? //注意x,y要加括號(hào),因?yàn)閤,y如果有復(fù)合運(yùn)算會(huì)出現(xiàn)問(wèn)題。

3.預(yù)處理器標(biāo)識(shí)#error的目的是什么?

停止編譯,提示錯(cuò)誤信息。

4.寫(xiě)一個(gè)無(wú)限循環(huán)。

a) while(1)

b) for(;;)

c) loop:

goto loop;

5.請(qǐng)寫(xiě)出float x與“零”比較的if語(yǔ)句。

const float EPSINON = 0.000001;

if ((x >= - EPS) && (x <= EPS));

6.嵌入式系統(tǒng)經(jīng)常具有要求程序員去訪問(wèn)某特定的內(nèi)存位置的特點(diǎn)。在某工程中,要求設(shè)置一絕對(duì)地址為0x67a9的整型變量的值為0xaa66。

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa66;

7.嵌入式系統(tǒng)總是要用戶對(duì)變量或寄存器進(jìn)行位操作。給定一個(gè)整型變量a,分別對(duì)a的第三位進(jìn)行置1,清0,取反的操作,同時(shí)保持其它位不變。

a |= (1<<3); ? ?//置1

a &= ~(1<<3); //清0

a ^= (1<<3); ? ?//取反

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

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

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

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

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

const的意思是只讀,它的作用是:

(1)表示為常量,不可更改;(2)改變變量的存儲(chǔ)域;(3)修飾函數(shù)參數(shù)時(shí),防止參數(shù)被以外改變。

10.關(guān)鍵字volatile有什么含意并給出三個(gè)不同的例子。

volatile是易變的,不穩(wěn)定的意思。volatile是關(guān)鍵字,是一種類型修飾符,用它修飾的變量表示可以被某些編譯器未知的因素更改,比如操作系統(tǒng)、硬件或者其他線程等。每次使用它修飾的變量的時(shí)候必須從內(nèi)存中取出它的值,而不是從寄存器或者緩存中讀取,從而保證了對(duì)特殊地址的穩(wěn)定訪問(wèn)。

(1) 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)

(2)一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automatic variables)

(3)多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

11.下面的聲明都是什么意思?

const int a; ? ? ? ? ? ?//a是一個(gè)常整型數(shù)

int const a; ? ? ? ? ? ?//同上

const int *a; ? ? ? ? ? //a是一個(gè)指向常整型數(shù)的指針(整型數(shù)是不可修改的,但指針可以)

int * const a; ? ? ? ? ? //a是一個(gè)指向整型數(shù)的常指針(指針指向的整型數(shù)是可以修改的,但指針是不可修改的)

const int * const a; ?//a是一個(gè)指向常整型數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)

12.用變量a給出下面的定義

a) 一個(gè)整型數(shù) ? ? ? ? //int a;

b) 一個(gè)指向整型數(shù)的指針 ?//int *a;

c) 一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù) ? //int **a;

d) 一個(gè)有10個(gè)整型數(shù)的數(shù)組 ?//int a[10]

e) 一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的 ?//int *a[10]

f) 一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針 ? //int (*a)[10]

g) 一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù) ?//int (*a)[int]

h) 一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù) ?//int (*a[10])(int)

13.?#與##的作用?

#是把宏參數(shù)轉(zhuǎn)化為字符串的運(yùn)算符,##是把兩個(gè)宏參數(shù)連接的運(yùn)算符。如下:

#define STR(arg) #arg??????????則宏STR(hello)展開(kāi)時(shí)為”hello”

#define NAME(y) name_##y????則宏NAME(1)展開(kāi)為name_1

14.如何避免頭文件被重復(fù)包含?

例如,為避免頭文件my_head.h被重復(fù)包含,可在其中使用條件編譯:

#ifndef _MY_HEAD_H

#define _MY_HEAD_H????/*空宏*/

/*其他語(yǔ)句*/

#endif

15.extern關(guān)鍵字的作用?

修飾符 extern 用在變量或者函數(shù)的聲明前, 用來(lái)說(shuō)明 “此變量 / 函數(shù)是在 別處定義的,要在此處引用”。

(1)extern修飾變量的聲明。

(2)extern修飾函數(shù)聲明。

(3)此外,extern修飾符可用于指示C或者C++函數(shù)的調(diào)用規(guī)范。

16.如何在C++代碼中調(diào)用C寫(xiě)的文件?

#ifdef __cplusplus

extern "C" {

#endif

// 代碼

#ifdef __cplusplus

}

#endif

17. extern "C"的作用?

extern "C"的作用是讓 C++ 編譯器將extern "C"聲明的代碼當(dāng)作 C 語(yǔ)言代碼處理,可以避免 C++ 因符號(hào)修飾導(dǎo)致代碼不能和C語(yǔ)言庫(kù)中的符號(hào)進(jìn)行鏈接的問(wèn)題。

18.隊(duì)列和棧的區(qū)別?

隊(duì)列先進(jìn)先出,棧后進(jìn)先出。

19.switch支持的參數(shù)類型?

switch語(yǔ)句中使用的表達(dá)式必須是int或enum類型,否則如float等其他數(shù)據(jù)類型是無(wú)法通過(guò)的編譯的,因?yàn)榫幾g器需要switch后面的語(yǔ)句和case后面的值精確匹配,而計(jì)算機(jī)無(wú)法精確表達(dá)一個(gè)float數(shù)據(jù)類型。

20.什么是預(yù)編譯,何時(shí)需要預(yù)編譯?

預(yù)編譯又稱為預(yù)處理,是做些代碼文本的替換工作。處理#開(kāi)頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等。C提供的預(yù)處理功能主要有以下三種:(1)宏定義???(2)文件包含??(3)條件編譯

21.嵌入式設(shè)計(jì)流程?

(1)系統(tǒng)需求分析

(2)體系結(jié)構(gòu)設(shè)計(jì)

(3)硬件/軟件協(xié)同設(shè)計(jì)

(4)系統(tǒng)集成

(5)系統(tǒng)測(cè)試

22.簡(jiǎn)述你對(duì)嵌入式和嵌入式系統(tǒng)的理解。

凡是使用了CPU的電子設(shè)備都可以叫嵌入式,(如電子表、超聲波測(cè)距儀等)。而嵌入式系統(tǒng)一般值在開(kāi)發(fā)時(shí)移植了操作系統(tǒng),功能較復(fù)雜的電子設(shè)備,(如手機(jī)、掌上電腦等)。

23.簡(jiǎn)述任務(wù)切換的過(guò)程。

當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它保存正在運(yùn)行任務(wù)的當(dāng)前狀態(tài),即CPU寄存器中的全部?jī)?nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀態(tài)保存區(qū),也就是任務(wù)自己的堆棧中。入棧工作完成以后,就把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀態(tài)從任務(wù)的堆棧中重新裝入CPU的寄存器,并開(kāi)始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過(guò)程就稱為任務(wù)切換。做任務(wù)切換所需要的時(shí)間取決于CPU有多少寄存器要入棧。

總結(jié)

以上是生活随笔為你收集整理的嵌入式 c语言 面试题,嵌入式面试题-持续更新的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。