Nếu có khai báo, câu nào sẽ đúng: char * ptr; char msg[10] char v;
Trả lời:
Đáp án đúng: B
Phân tích:
char *ptr;
: Khai báo một con trỏptr
kiểuchar
, có nghĩa làptr
sẽ lưu địa chỉ của một biến kiểuchar
hoặc một chuỗi các ký tự (mảng các ký tự).char msg[10];
: Khai báo một mảngmsg
gồm 10 ký tự. Tên mảng (msg
) khi sử dụng trong biểu thức (ngoại trừ toán tửsizeof
và&
) sẽ tự động chuyển đổi thành một con trỏ tới phần tử đầu tiên của mảng.char v;
: Khai báo một biếnv
kiểuchar
.
Đánh giá các phương án:
- A.
ptr = v;
: Gán giá trị của biếnv
(kiểuchar
) cho con trỏptr
(kiểuchar*
). Đây là một lỗi kiểu dữ liệu, vìptr
cần một địa chỉ, chứ không phải là một giá trị ký tự. Do đó, phương án này sai. - B.
ptr = msg;
: Gán địa chỉ của phần tử đầu tiên trong mảngmsg
cho con trỏptr
. Vìmsg
tự động chuyển đổi thành con trỏ tới phần tử đầu tiên của nó (kiểuchar*
), phép gán này hợp lệ. Do đó, phương án này đúng.
Vậy đáp án đúng là B.