JavaScript is required

Chọn kết quả hợp lí cho chương trình sau: void main() { struct sv { float d; char ht[10] }; struct sv m, * p; p = & m; printf(“ % p”, & m); printf(“ % p”, p); };

A.

“FFE6FFE6”

B.

“FFE6FFE7”

C.

“FFE66EFF”

D.

“FFE4FFE4”

Trả lời:

Đáp án đúng: C


Chương trình C này in ra địa chỉ của biến cấu trúc m hai lần. Đoạn mã khai báo một cấu trúc sv chứa một số thực (float d) và một chuỗi ký tự (char ht[10]). Sau đó, một biến m kiểu struct sv và một con trỏ p kiểu struct sv* được khai báo. Con trỏ p được gán địa chỉ của m (p = &m). Hai lệnh printf sau đó in ra địa chỉ của m (&m) và giá trị của p, vốn cũng là địa chỉ của m. Vì vậy, cả hai lệnh printf sẽ in ra cùng một địa chỉ.

Địa chỉ in ra có dạng hệ thập lục phân (ví dụ: FFE6FFE6). Vì cả hai lần in đều in cùng một địa chỉ nên đáp án đúng phải là phương án mà cả hai địa chỉ giống nhau.

Trong các lựa chọn:

  • A. “FFE6FFE6”: Cả hai địa chỉ đều giống nhau.
  • B. “FFE6FFE7”: Hai địa chỉ khác nhau.
  • C. “FFE66EFF”: Hai địa chỉ khác nhau.
  • D. “FFE4FFE4”: Cả hai địa chỉ đều giống nhau.

Tuy nhiên, do không có thông tin cụ thể về trình biên dịch hoặc nền tảng đang sử dụng, ta không thể xác định địa chỉ chính xác. Câu A và D đều có thể đúng, nhưng A thường gặp hơn.

Câu hỏi liên quan