C語言記憶體分配和編譯過程的多項選擇題


在這裡,我們將看到一些關於記憶體分配和編譯過程的多項選擇題。

問題 1 − 以下程式碼的輸出是什麼?

 現場演示

#include <stdio.h>
#include <stdlib.h>
int main() {
   union my_union {
      int i;
      float f;
      char c;
   };
   union my_union* u;
   u = (union my_union*)malloc(sizeof(union my_union));
   u->f = 20.60f;
   printf("%f", u->f);
}

選項

  • 垃圾值
  • 20.600000
  • 語法錯誤
  • 20.6

解釋

使用聯合體,我們可以使用相同的記憶體位置來儲存多種型別的資料。聯合體的所有成員都使用具有最大空間的相同記憶體位置。這裡使用浮點數,其中 20.60f = 20.600000。所以答案 B 是正確的。

問題 2 − 編譯過程的正確順序是什麼?

選項

  • 彙編器、編譯器、預處理器、連結器
  • 編譯器、彙編器、預處理器、連結器
  • 預處理器、編譯器、彙編器、連結器
  • 彙編器、編譯器、連結器、預處理器

解釋

選項 C 是正確的,首先它預處理程式碼,然後編譯它,之後它建立彙編級程式碼或目的碼,然後進行連結。

問題 3 − 以下哪個語句是正確的?

選項

  • 在連結期間,程式碼 #include 被 stdio.h 替換。
  • 在預處理期間,程式碼 #include 被 stdio.h 替換。
  • 在執行期間,程式碼 #include 被 stdio.h 替換。
  • 在編輯期間,程式碼 #include 被 stdio.h 替換。

解釋

選項 B 是正確的。首先,它建立預處理程式碼,在此階段,它將 #include 語句中提到的檔案中存在的程式碼附加到程式碼中,然後傳送到編譯器。

問題 4 − 使用 fflush() 函式的目的是什麼?

選項

  • 重新整理所有流和指定流
  • 僅重新整理指定流
  • 重新整理輸入輸出緩衝區
  • 這是一個無效的庫函式

解釋

此函式用於僅重新整理輸出流。它清除輸出緩衝區並將輸出傳送到控制檯。選項 A 是正確的。

問題 5 − 指出以下程式碼的錯誤?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
   char* ptr;
   *ptr = (int*)malloc(30);
   strcpy(ptr, "ABC");
   printf("%s", ptr);
   free(ptr);
}

選項

  • strcpy() 語句錯誤
  • *ptr = (int*)malloc(30); 錯誤
  • free(ptr) 錯誤
  • 沒有錯誤

解釋

選項 B 是正確的。這裡它在沒有強制轉換的情況下從指標建立整數。

更新於: 2019年10月21日

437 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.