App下載

C語言編程十大面試題及答案

猿友 2020-11-27 14:04:23 瀏覽數(shù) (31407)
反饋

  無論學(xué)習(xí)何種編程語言不能只停留在看的層面上,最后還是得要自己去實(shí)際敲寫代碼才能成長,下面是編程獅整理的c語言編程得十大面試題目及其答案。

  1.變量/函數(shù)的聲明和定義之間有什么區(qū)別

  答案:變量/函數(shù)的聲明僅聲明變量/函數(shù)存在于程序中的某個(gè)位置,但未為其分配內(nèi)存。但是變量/函數(shù)的聲明起著重要的作用。這就是變量/函數(shù)的類型。因此,在聲明變量時(shí),程序會(huì)知道該變量的數(shù)據(jù)類型。在聲明函數(shù)的情況下,程序會(huì)知道該函數(shù)的參數(shù)是什么,它們的數(shù)據(jù)類型,參數(shù)的順序以及函數(shù)的返回類型。這就是聲明。關(guān)于定義,當(dāng)我們定義變量/函數(shù)時(shí),除了聲明的作用外,它還為該變量/函數(shù)分配內(nèi)存。因此,我們可以將定義視為聲明的超集。(或聲明作為定義的子集)。

  2.C中有哪些不同的存儲(chǔ)類說明符?

  答案:auto, register, static, extern

  3.變量的范圍是什么?變量在C中的作用域怎樣?

  答案:變量的范圍是程序的一部分,可以直接訪問該變量。在C語言中,所有標(biāo)識(shí)符都在詞法(或靜態(tài))范圍內(nèi)。

  4.沒有分號(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.通過大型結(jié)構(gòu),以便避免完整復(fù)制結(jié)構(gòu)。

  4.實(shí)現(xiàn)“鏈接”數(shù)據(jù)結(jié)構(gòu),例如鏈接列表和二進(jìn)制樹。

  6.什么是NULL指針?

  答案: NULL用于指示指針未指向有效位置。理想情況下,如果在聲明時(shí)不知道指針的值,則應(yīng)將指針初始化為NULL。另外,當(dāng)由它指向的內(nèi)存在程序中間被釋放時(shí),我們應(yīng)該使指針為NULL。

  7.什么是懸空指針?

  答案:懸空指針是沒有指向有效內(nèi)存位置的指針。當(dāng)刪除或釋放對(duì)象時(shí),如果不修改指針的值,就會(huì)出現(xiàn)懸空指針,因此指針仍然指向釋放后的內(nèi)存的存儲(chǔ)位置。以下是示例。

  // 示例1

  int* ptr = (int*)malloc(sizeof(int));

  ..........................free(ptr);

  // ptr 是一個(gè)懸空指針,以下操作無效

  *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ù)器之類的程序而言,內(nèi)存泄漏是特別嚴(yán)重的問題,根據(jù)定義它們永遠(yuǎn)不會(huì)終止。

  9.什么是局部靜態(tài)變量?它們有什么用?

  答案:局部靜態(tài)變量是一個(gè)變量,其生存期并不以聲明它的函數(shù)調(diào)用結(jié)尾。它延長了整個(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語言中,默認(rèn)情況下函數(shù)是全局的。函數(shù)名稱前的“ static”關(guān)鍵字使其變?yōu)殪o態(tài)。與C中的全局函數(shù)不同,對(duì)靜態(tài)函數(shù)的訪問僅限于聲明它們的文件。因此,當(dāng)我們想限制對(duì)函數(shù)的訪問時(shí),我們將它們?cè)O(shè)為靜態(tài)。使函數(shù)成為靜態(tài)的另一個(gè)原因可能是在其他文件中重用了相同的函數(shù)名。


2 人點(diǎn)贊