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,分別代表每個學生的學號和成績。輸出 按照學生的成績從小到...