JavaScript is required

Cho khai báo. Câu lệnh nào không hợp lệ?
struct T {
int x;
float y;
}
t, * p, a[10]

A.
p=&t;
B.
p=&t.x;
C.
p=&a[5]
D.
p=&a;
Trả lời:

Đáp án đúng: D


Câu hỏi kiểm tra về con trỏ và cách sử dụng nó với struct trong C/C++. Khai báo `struct T { int x; float y; } t, *p, a[10];` tạo ra: - `t`: một biến kiểu `struct T`. - `*p`: một con trỏ trỏ đến kiểu `struct T`. - `a[10]`: một mảng 10 phần tử, mỗi phần tử có kiểu `struct T`. Phân tích từng đáp án: - A. `p = &t;`: `&t` là địa chỉ của biến `t` (kiểu `struct T`), gán địa chỉ này cho con trỏ `p` (kiểu con trỏ trỏ đến `struct T`). Câu lệnh này hợp lệ. - B. `p = &t.x;`: `&t.x` là địa chỉ của thành viên `x` (kiểu `int`) của biến `t`. Tuy nhiên, `p` là con trỏ trỏ đến kiểu `struct T`, không phải kiểu `int`. Do đó, câu lệnh này không hợp lệ vì kiểu dữ liệu không phù hợp. - C. `p = &a[5];`: `&a[5]` là địa chỉ của phần tử thứ 6 (chỉ số 5) trong mảng `a` (kiểu `struct T`). Gán địa chỉ này cho con trỏ `p` (kiểu con trỏ trỏ đến `struct T`). Câu lệnh này hợp lệ. - D. `p = &a;`: `&a` là địa chỉ của mảng `a`, có thể được coi là địa chỉ của phần tử đầu tiên của mảng (kiểu `struct T`). Do đó, nó có thể được gán cho con trỏ `p`. Câu lệnh này hợp lệ. Vậy, câu lệnh không hợp lệ là B. p=&t.x;

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