Các câu hỏi trắc nghiệm về cấp phát bộ nhớ và quy trình biên dịch C.
Câu 1: Output của code union + malloc
union my_union { int i; float f; char c; };
union my_union* u = malloc(sizeof(union my_union));
u->f = 20.60f; printf("%f", u->f);
Đáp án: 20.600000 (Union dùng chung vùng nhớ, float in ra 20.600000)
Câu 2: Thứ tự quy trình biên dịch
Đáp án: Preprocessor → Compiler → Assembler → Linking
Câu 3: #include được thay thế ở giai đoạn nào?
Đáp án: Preprocessing (Tiền xử lý)
Câu 4: Mục đích fflush()
Đáp án: Xóa bộ đệm xuất (output buffer) và đẩy ra console
Câu 5: Lỗi trong code malloc
char* ptr; *ptr = (int*)malloc(30);
Đáp án: Lỗi tại *ptr = (int*)malloc(30) - ép kiểu con trỏ sai, nên là ptr = (char*)malloc(30)