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 是正確的。這裡它在沒有強制轉換的情況下從指標建立整數。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP