เราจะพบคำถามเกี่ยวกับ MCQ เกี่ยวกับการจัดสรรหน่วยความจำและกระบวนการรวบรวม
คำถามที่ 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.6000000
- ข้อผิดพลาดทางไวยากรณ์
- 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 ถูกต้อง นี่จะทำให้จำนวนเต็มจากตัวชี้โดยไม่ต้องโยน