C語言語法基礎考試

2021-04-28 23:05:25 字數 3108 閱讀 9634

c語言語法基礎考試(第2輪)

學員姓名:

試卷說明: 1)

本試卷共

25題,部分來自

intel

、微軟、

ti等公司的面試題,其餘出自平時基礎課程。 2)

本試卷主要目的是考查對

c語言本身的理解程式,而非演算法測試。 3)

所有題目均需相關說明,

「yes/no」

型回答均不得分。 4)

從實際專案開發的角度回答問題,切忌使用應試教育中的答題方式。必要時可自由發揮。

(一) 

下面哪一題題目本身有誤?請更正。

(二) 

結合arm

體系結構,分別說明函式和函式指標的本質。

(三) 

samsung s3c2440

基於低端的

armv4

架構,雖已淘汰,但功能簡單、開發容易,為廣大無基礎的嵌入式愛好者自學時使用;目前業界

armv5

及以上架構是主流,如

atmel at91sam9263

、freescale i.mx31

均為armv5

以上架構,我們日常教學及實踐以

armv5+

平台為主。現有一網友向我們

report

乙個bug

:開源專案

g-bios

中的一段**在他的

s3c2440

上執行失敗,而同樣的**在我們的

at91sam9263

上卻能正常執行。經初步分析,懷疑是函式指標惹的禍j

請結合arm

體系結構及

c語言編譯器回答:

s3c2440

與at91sam9263上c

語言函式指標的實現有何不同?為何會導致上面的問題?

(四) 

我們常說

main()

函式是c

程式的入口,所以程式執行時的第一條機器指令位於

main

位址處,對嗎?

若不是,請解釋

main()

函式之前還需執行什麼?

(五) 

我們常說

c語言是一種基於函式和棧的語言。那麼,

c語言函式中的棧與普通資料結構上提到的棧有什麼區別?(至少回答兩點)

(六) 

我們常說

c語言中的指標表示記憶體中的乙個位址。那麼,就目前的

pc機而言,這個記憶體位址指的就是主機板

dimm

插槽上ddr3 sdram

記憶體中的乙個位址嗎?

(七) 

程式和程序有何區別?

(八) 

函式指標與普通資料型別指標有什麼區別?

(九) 32位

arm linux

嵌入式系統,典型

memory

空間劃分為

3g(user) + 1g (kernel)

。基於這種劃分,請畫出

linux

核心和使用者程序的空間布局圖,要求至少包括資料段、**段、棧和堆四個基本段。

(十) 

你在什麼情況下會使用預處理標識

#error?

(十一)

如下定義陣列是否合法?並說明理由。

int n = 1024;

int a[n];

(十二)

定義type *a[3][4]

,當type

為int

或char *

時陣列a

佔據的記憶體空間大小分別為多少?

(十三)

static

關鍵字的作用?

(十四)

const

關鍵字的作用?

(十五)

switch

語句為什麼比

if語句效率高?

(十六)

寫乙個if

語句判斷乙個

32位整數是否為2的

n次方(不能用迴圈)。

(十七)

有乙個32

位變數a,將a

的bit3~bit5置為2

(即0b010

),其它幾位保持不變。

(十八)用c

語言實現將記憶體位址從

0x87654321

的開始的

4個位元組置為

0x1234

,並說明你的**有何問題。

(十九)

有如下變數定義,請依次寫出後面四條賦值語句的左值:

int ix;

unsigned int ux;

char cx = (char)0xff;

unsigned char bx = (unsigned char)0xff;

ix = cx;

ix = bx;

ux = cx;

ux = bx;

(二十)

指出下面**的錯誤之處:

typedef struct ss

*p;p = malloc(sizeof(*p));

// todo: add code here

free(&p->y);

(二十一) 

已知某一型別

type1

,請分別使用

#define

和typedef

語句把type2

定義為type1

,並說明你的**有什麼問題。

(二十二) 

下面**有什麼問題?

char *a = 「abc」, b = 「abc」;

int main()

(二十三) 

下面**中

*p的值是多少?(用

16進製表示)

char a = ;

int *p = (int *)a + 1;

(二十四) 

已知struct ss

中有一成員

count

,寫一表示式求

count在ss

中的偏移。

(二十五) 

談談你的收穫及不滿。

C語言語法

printf 01f n double 2 1 printf 02f n double 2 1 保留兩位小數 陣列賦值 include memset al,0,sizeof al 輸入浮點數 while scanf lf n eof 字串比較 include char a 11 1234567890...

go語言語法基礎

1.go標記 go 程式可以由多個標記組成,可以是關鍵字,識別符號,常量,字串,符號 如 fmt.println hello world 2.行分隔符 在 go 程式中,一行代表乙個語句結束。3.注釋 注釋不會被編譯,每乙個包應該有相關注釋。單行注釋 多行注釋 4.識別符號 識別符號用來命名變數 型...

C語言瘋狂講義 (二)C語言語法基礎

1 關鍵字 c語言編譯器保留的一些特殊功能的單詞 一共有32個 1 兩大類 資料型別相關的關鍵字 20 個,流程控制相關的關鍵字 12 2 xcode中關鍵字以 紫色來顯示 2 識別符號 我們使用者自己定義的一些字母的組合,可以實現我特定的功能 1 識別符號用作 變數名函式名陣列名 2 識別符號的組...