เราจะพบคำถามเกี่ยวกับ 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 ถูกต้อง นี่จะทำให้จำนวนเต็มจากตัวชี้โดยไม่ต้องโยน