C語言面試題

來源:互聯網
上載者:User

1、堆疊溢位一般是由什麼原因導致的?
   答:沒有回收垃圾資源。 

2、關鍵字static的作用是什嗎?
   答:在C語言中,關鍵字static有三個明顯的作用:
(1)在函數體,一個被聲明為靜態變數在這一函數被調用過程中維持其值不變。
(2)在模組內,一個被聲明為靜態變數可以被模組內所用函數訪問,但不能被模組外其它函數訪問。它是一個本地的全域變數。
(3)在模組內,一個被聲明為靜態函數只可被這一模組內的其它函數調用。那就是,這個函數被限制在聲明它的模組的本地範圍內使用。 

3、論述含參數的宏與函數的優缺點。
   答:宏的優點:執行效率高,宏的缺點:容易出錯。
   函數的優點:不容易出錯,函數的缺點:執行效率低。

4、解釋局部變數、全域變數和靜態變數的含義。
  
 答:局部變數、全域變數和靜態變數是相對於生命週期說的,全域變數伴隨著程式直到最後,局部變數離開了範圍就會銷毀。靜態變數分為靜態局部變數和靜態全域變數,它們的生命週期伴隨著程式直到最後,二者的區別在於可見度不同。

5、do……while和while……do有什麼區別?

   答:前一個迴圈一遍再判斷,後一個判斷以後再迴圈。 

6、隊列和棧有什麼區別?
   答:隊列先進先出,棧後進先出。

10、局部變數能否和全域變數重名?
   答:能,局部會屏蔽全域。如果要使用全域變數,需要使用"::"。
   局部變數可以與全域變數同名,在函數內引用這個變數時,會用到同名的局部變數,而不會用到全域變數。對於有些編譯器而言,在同一個函數內可以定義多個同名的局部變數,比如,在兩個迴圈體內都定義一個同名的局部變數,而那個局部變數的範圍就在那個迴圈體內。

11、請寫出下面代碼的輸出結果。
#include<stdio.h>
main(){
  int a,b,c,d;
  a=10;
  b=a++;
  c=++a;
  d=10*a++;
  printf("b,c,d:%d,%d,%d",b,c,d); 
}

   答:輸出結果為:b,c,d:10,12,120 

7、用變數a給出下面的定義。
  (a)一個整型數
  (b)一個指向整型數的指標
  (c)一個指向指標的的指標,它指向的指標是指向一個整型數
  (d)一個有10個整型數的數組
  (e)一個有10個指標的數組,該指標是指向一個整型數的
  (f)一個指向有10個整型數數組的指標
  (g)一個指向函數的指標,該函數有一個整型參數並返回整型數
  (h)一個有10個指標的數組,該指標是指向一個函數的,該函數有一個整型參數並返回整型數。

   答:用變數a給出的定義如下:

 (a) int a; (b) int *a;
 (c) int **a; (d) int a[10];
 (e) int *a[10]; (f) int (*a)[10];
 (g) int (*a)(int); (h) int (*a[10])(int);

8、全域變數和局部變數在記憶體中是否有區別?如果有,是什麼區別?
   答:全域變數儲存在待用資料庫,局部變數在堆棧。

9、int i=(j=4,k=8,l=16,m=32); printf(“%d”, i);該語句的輸出結果是多少?
   答:輸出結果為:32。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.