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: D


Chương trình C này in ra địa chỉ của biến cấu trúc `m` hai lần. `&m` lấy địa chỉ trực tiếp của `m`, còn `p = &m;` gán địa chỉ của `m` cho con trỏ `p`, do đó `p` cũng trỏ đến địa chỉ của `m`. Vì vậy, cả hai lệnh `printf` sẽ in ra cùng một địa chỉ. Các giá trị địa chỉ cụ thể (ví dụ: FFE6FFE6) phụ thuộc vào vị trí bộ nhớ mà biến `m` được cấp phát khi chương trình chạy. Tuy nhiên, điều quan trọng là cả hai giá trị này phải giống nhau. Do đó, đáp án A và D có khả năng đúng nhất, tuy nhiên vì đáp án A có cùng một địa chỉ được in ra 2 lần, nên đáp án A là đáp án đúng.

Tổng hợp 600+ câu hỏi trắc nghiệm lập trình C có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan