Computer >> Máy Tính >  >> Lập trình >> lập trình C

MCQ về cấp phát bộ nhớ và quy trình biên dịch trong C

Ở đây, chúng ta sẽ thấy một số câu hỏi MCQ về Quy trình phân bổ và biên dịch bộ nhớ.

Câu hỏi 1 - Đầu ra của đoạn mã sau -

#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);
}

Tùy chọn -

  • Giá trị rác
  • 20.600000
  • Lỗi cú pháp
  • 20,6

Giải thích

Sử dụng kết hợp, chúng ta có thể sử dụng cùng một vị trí bộ nhớ để chứa nhiều loại dữ liệu. Tất cả các thành viên của liên minh sử dụng cùng một vị trí bộ nhớ có dung lượng tối đa. Ở đây float được sử dụng, có 20.60f =20.600000. Vì vậy, câu trả lời B là chính xác.

Câu hỏi 2 - Trình tự đúng của Quy trình biên dịch là gì -

Tùy chọn -

  • Trình lắp ráp, Trình biên dịch, Trình tiền xử lý, Liên kết
  • Trình biên dịch, Trình lắp ráp, Trình tiền xử lý, Liên kết
  • Bộ tiền xử lý, Trình biên dịch, Trình lắp ráp, Liên kết
  • Trình lắp ráp, Trình biên dịch, Liên kết, Trình tiền xử lý

Giải thích -

Tùy chọn C đúng, Lúc đầu, nó xử lý trước mã, sau đó biên dịch nó, sau đó nó tạo mã cấp độ lắp ráp hoặc mã đối tượng, sau đó liên kết được thực hiện.

Câu hỏi 3 - Phát biểu nào sau đây là đúng?

Tùy chọn -

  • Trong khi Liên kết Mã #include thay thế bằng stdio.h
  • Trong quá trình Tiền xử lý, Mã #include sẽ thay thế bằng stdio.h
  • Trong quá trình thực thi, mã #include sẽ thay thế bằng stdio.h
  • Trong quá trình chỉnh sửa mã, #include sẽ thay thế bằng stdio.h

Giải thích -

Phương án B đúng. Lúc đầu, nó tạo mã được xử lý trước, trong giai đoạn đó, nó sẽ đính kèm các mã có trong tệp được đề cập trong câu lệnh #include vào mã sau đó được gửi đến trình biên dịch.

Câu hỏi 4 - Mục đích sử dụng hàm fflush () -

Tùy chọn -

  • Để xóa tất cả các luồng và các luồng được chỉ định
  • Để chỉ xóa các luồng được chỉ định
  • Để xóa bộ đệm đầu vào-đầu ra
  • Đây là chức năng thư viện không hợp lệ

Giải thích -

Chức năng này chỉ được sử dụng để xả luồng đầu ra. Nó xóa bộ đệm đầu ra và gửi đầu ra đến bàn điều khiển. Phương án A đúng.

Câu hỏi 5 - Chỉ ra lỗi của đoạn mã sau -

#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);
}

Tùy chọn -

  • Lỗi trong câu lệnh strcpy ()
  • Lỗi trong * ptr =(int *) malloc (30);
  • Lỗi trong miễn phí (ptr)
  • Không có lỗi

Giải thích -

Phương án B đúng. Đây là số nguyên từ con trỏ, không có ép kiểu