無(wú)論學(xué)習(xí)何種編程語(yǔ)言不能只停留在看的層面上,最后還是得要自己去實(shí)際敲寫(xiě)代碼才能成長(zhǎng),下面是編程獅整理的c語(yǔ)言編程得十大面試題目及其答案。
1.變量/函數(shù)的聲明和定義之間有什么區(qū)別
答案:變量/函數(shù)的聲明僅聲明變量/函數(shù)存在于程序中的某個(gè)位置,但未為其分配內(nèi)存。但是變量/函數(shù)的聲明起著重要的作用。這就是變量/函數(shù)的類(lèi)型。因此,在聲明變量時(shí),程序會(huì)知道該變量的數(shù)據(jù)類(lèi)型。在聲明函數(shù)的情況下,程序會(huì)知道該函數(shù)的參數(shù)是什么,它們的數(shù)據(jù)類(lèi)型,參數(shù)的順序以及函數(shù)的返回類(lèi)型。這就是聲明。關(guān)于定義,當(dāng)我們定義變量/函數(shù)時(shí),除了聲明的作用外,它還為該變量/函數(shù)分配內(nèi)存。因此,我們可以將定義視為聲明的超集。(或聲明作為定義的子集)。
2.C中有哪些不同的存儲(chǔ)類(lèi)說(shuō)明符?
答案:auto, register, static, extern
3.變量的范圍是什么?變量在C中的作用域怎樣?
答案:變量的范圍是程序的一部分,可以直接訪問(wèn)該變量。在C語(yǔ)言中,所有標(biāo)識(shí)符都在詞法(或靜態(tài))范圍內(nèi)。
4.沒(méi)有分號(hào),您將如何打印“ Hello World”?
#include <stdio.h>
int main(void)
{
if (printf("Hello World")) {
}
}
5.什么時(shí)候應(yīng)該在C程序中使用指針?
答案:
1.獲取變量的地址
2.為了在C中實(shí)現(xiàn)引用傳遞:指針允許不同的函數(shù)共享和修改其局部變量。
3.通過(guò)大型結(jié)構(gòu),以便避免完整復(fù)制結(jié)構(gòu)。
4.實(shí)現(xiàn)“鏈接”數(shù)據(jù)結(jié)構(gòu),例如鏈接列表和二進(jìn)制樹(shù)。
6.什么是NULL指針?
答案: NULL用于指示指針未指向有效位置。理想情況下,如果在聲明時(shí)不知道指針的值,則應(yīng)將指針初始化為NULL。另外,當(dāng)由它指向的內(nèi)存在程序中間被釋放時(shí),我們應(yīng)該使指針為NULL。
7.什么是懸空指針?
答案:懸空指針是沒(méi)有指向有效內(nèi)存位置的指針。當(dāng)刪除或釋放對(duì)象時(shí),如果不修改指針的值,就會(huì)出現(xiàn)懸空指針,因此指針仍然指向釋放后的內(nèi)存的存儲(chǔ)位置。以下是示例。
// 示例1
int* ptr = (int*)malloc(sizeof(int));
..........................free(ptr);
// ptr 是一個(gè)懸空指針,以下操作無(wú)效
*ptr = 10;
// 示例2
int* ptr = NULL { int x = 10; ptr = &x; }
//x超出范圍,并且分配給x的內(nèi)存現(xiàn)在可用
//所以ptr現(xiàn)在是懸空指針
8.什么是內(nèi)存泄漏?為何應(yīng)避免使用它
答案:程序員在堆中創(chuàng)建內(nèi)存而忘記刪除它時(shí),就會(huì)發(fā)生內(nèi)存泄漏。對(duì)于諸如守護(hù)程序和服務(wù)器之類(lèi)的程序而言,內(nèi)存泄漏是特別嚴(yán)重的問(wèn)題,根據(jù)定義它們永遠(yuǎn)不會(huì)終止。
9.什么是局部靜態(tài)變量?它們有什么用?
答案:局部靜態(tài)變量是一個(gè)變量,其生存期并不以聲明它的函數(shù)調(diào)用結(jié)尾。它延長(zhǎng)了整個(gè)程序的壽命。所有對(duì)該函數(shù)的調(diào)用都共享局部靜態(tài)變量的相同副本。靜態(tài)變量可用于計(jì)算調(diào)用函數(shù)的次數(shù)。另外,靜態(tài)變量的默認(rèn)值為0。例如,以下程序輸出“ 0 1”
#include <stdio.h>
void fun()
{
// 靜態(tài)變量的默認(rèn)值為0
static int x;
printf("%d ", x);
x = x + 1;
}
int main()
{
fun();
fun();
return 0;
}
// 輸出: 0 1
10.什么是靜態(tài)函數(shù)?它們有什么用?
答案:在C語(yǔ)言中,默認(rèn)情況下函數(shù)是全局的。函數(shù)名稱(chēng)前的“ static”關(guān)鍵字使其變?yōu)殪o態(tài)。與C中的全局函數(shù)不同,對(duì)靜態(tài)函數(shù)的訪問(wèn)僅限于聲明它們的文件。因此,當(dāng)我們想限制對(duì)函數(shù)的訪問(wèn)時(shí),我們將它們?cè)O(shè)為靜態(tài)。使函數(shù)成為靜態(tài)的另一個(gè)原因可能是在其他文件中重用了相同的函數(shù)名。