溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言有哪些面試題

發(fā)布時間:2021-11-22 15:28:59 來源:億速云 閱讀:301 作者:iii 欄目:大數據

這篇文章主要介紹“C語言有哪些面試題”,在日常操作中,相信很多人在C語言有哪些面試題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言有哪些面試題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1、c語言里面關鍵static的作用是什么?(看到這個問題讀者可以自己先思考一下,再看答案)

答案:


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

        (2)、在模塊內,模塊就是你寫的".C"文件(在函數體外),一個被聲明為靜態(tài)的變量可以被模塊內所用函數訪問,但是不能被模塊外其它函數訪問,它相當于一個本地的一個靜態(tài)全局變量(注意它和非靜態(tài)全局變量的區(qū)別哦)。

        (3)、在模塊內,一個被聲明為靜態(tài)的函數只可被這一模塊內的其它函數調用。也就是說,這個函數被限制在聲明它的模塊本地內使用,不可以在模塊外使用。

2、寫一個“標準”宏,這個宏輸入兩個參數并返回較小的一個;同時講出 # 與  ##的作用區(qū)別?

答案:

    

         (1)、第一個問題可以這樣來寫,注意里面使用了三目運算符:

#define  MIN(x,y)   ((x)<(y)?(x):(y))

         (2)、"#"作用是把宏參數轉化為字符串的運算符,而"##"是把兩個宏參數連接的運算符:

#define  STR(arg)  #arg    

這里當參數 arg 為  hello ,則宏展開的結果是"hello"

#define  STR(arg)   name_y
#define  STR(arg)   name_##y
#define  STR(arg,arg2)   arg arg2##_##arg2##_arg2  

上面示例中,假設 arg 為  int , arg2 為 a ,則上面宏展開的結果為:

name_y
name_int
inta_a_a 

3、C語言里面關鍵字sizeof的作用是什么?

答案:

       

        (1)sizeof是在編譯階段處理,且不能被編譯為機器碼。還有一點,很多人會認為它是一個庫函數;它的作用是計算出各種類型變量或者結構所占的字節(jié)數:

int a ,sizeof(a)
int *a,sizeof(a)
int a[10],sizeof(a)
int a[0],sizeof(a)
sizeof(void)
sizeof(void *)

上面演示結果:

4
4
40
 0
 1
4

4、請簡述用戶空間的內存分配及各空間保存的數據類型:

答案:

        (1) 用戶空間供為3G,分為:??臻g,堆空間,數據區(qū),代碼段。

  • ??臻g保存:局部變量,函數形參,自動變量。??臻g特點,先進后出,空間由系統(tǒng)管理;??臻g生命周期所在函數執(zhí)行結束后釋放;棧空間保存的局部變量未初始化時,默認初始化為隨機值。

  • 堆空間:由malloc , calloc ,ralloc,這些好函數分配的空間位堆空間,堆空間特點:先進先出,由用戶管理。

  • 數據區(qū):又分為.bss段、.data段、常量區(qū)。其中.bss段保存的是未初始化的全局變量,當全局變量未初始化時,系統(tǒng)默認初始化為0;常量區(qū)保存的是常量,里面保存的值不能被修改,只能做讀操作;.data段是保存已經初始化的全局變量以及被static修飾的變量(靜態(tài)變量)。數據區(qū)的聲明周期是整個程序執(zhí)行完之后再釋放。

  • 代碼段保存的是代碼。

到此,關于“C語言有哪些面試題”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI