C語言常用面試題 2015 5 6(2)

2021-07-02 06:34:47 字數 1490 閱讀 9638

1.分別給出bool,int,float,指標於零值進行比較的if語句

bool型:if(!var)

int型:if(var==0)

float型:const float tmp=0.00001; if(var>=-tmp && var<=tmp)       浮點型變數並不精確,所以不可以用「==」「!=」與數字進行比較,if(var==0.0)為錯誤書寫方式

指標型:if(var==null)

2.乙個32位程式,計算sizeof的大小

void func(char str[100])

void *p=malloc(100);

sizeof(p)=?

答案是4,4

func(char str[100])函式中,陣列名作為函式形參時,在函式體內,陣列名失去了本身的內涵,淪為普通指標,失去了常量特性,可以做自增、自減操作。

3.巨集的正確寫法,把引數都用括號括起來,後面沒有分號,不是c語言執行語句

#define min(x,y)  ((x)>(y)?(x):(y))

巨集只是進行名字替換,不是真正的函式,在引數呼叫時會產生***,在引數自增或自減時也會產生***

4.為什麼標準標頭檔案中經常有這樣的**?

#ifndef _incvxworksh

#define _incvxworksh

#ifdef _cplusplus

extern "c"

#endif

#endif 答:

#ifndef _incvxworksh

#define _incvxworksh

#endif  是防止被重複引用。

作為物件導向的程式語言,c++支援函式過載,面向過程的c語言不支援,為了實現c和c++的混合程式設計,提供了extern  「c」來解決名字來解決名字匹配問題,函式名稱前加上extern  「c」,編譯器就會按照c語言的編譯方式來編譯該函式,這樣c語言就可以呼叫c++的函式了。

5.說出static和const盡可能多的應用

static:

修飾區域性變數,作用域限於函式體內,生存期為整個程式生命週期;

修飾全域性變數,作用域限於該原始檔,不能被其他外部檔案呼叫;

修飾函式,作用域限於該原始檔,不能被外部檔案呼叫;

const:

定義時需要初始化,一旦定義,不可修改,在記憶體的常量區存放;

對指標來說,可以指定指標為常量型別,或者其所指向內容為常量,或者兩者都為常量;

函式宣告時,修飾形參,表明其值不可修改;

6.試寫乙個c語言函式,若處理器是big_endian,返回0,若是little_endian,返回1

#include

int checkcpu()

data;

data.a=1;

return (data.b==1);

}int main()

小端模式的cpu,對運算元的存放順序是從低位元組到高位元組,先存放低位元組,再存放高位元組。

C語言面試題

基礎篇 1 區域性變數能否和全域性變數重名?可以2 如何引用乙個已經定義過的全域性變數?直接呼叫並初始化 3 全域性變數可不可以定義在可被多個.c檔案包含的標頭檔案中?為什麼?可以,6 堆和棧有什麼區別?7 什麼是預編譯,何時需要預編譯 8 c和c 中的struct有什麼不同?9 memset me...

C語言面試題

1.求某一年的某一天 includestruct sdate int main int i 0,nday dt.nday while i2 nday printf 這是 d年的第 d天 n dt.nyear,dt.nday return 0 將列印和演算法抽象成不同函式 includestruct ...

C語言面試題

1.要求使用一維陣列,輸入10名同學的序號和成績,並進行排序。題目1196 成績排序 題目描述 用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出 按照學生的成績從小到...