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。