Nếu có các khai báo sau. Câu nào sau đây là đúng: char msg[10] char * ptr; char value;
Đáp án đúng: B
Phân tích câu hỏi:
Câu hỏi này kiểm tra sự hiểu biết về con trỏ và mảng trong C, đặc biệt là cách gán địa chỉ cho con trỏ.
Đánh giá các phương án:
- Phương án A: ptr = value;
Câu lệnh này sai.
value
là một biến kiểuchar
, chứa một ký tự. Khi gánvalue
choptr
(là một con trỏ kiểuchar *
), bạn đang cố gắng gán một giá trị (ký tự) cho một biến lưu địa chỉ. Điều này gây ra lỗi kiểu dữ liệu. - Phương án B: ptr = msg;
Câu lệnh này đúng.
msg
là một mảng kiểuchar
, và khi sử dụng tên mảng (msg
) mà không có chỉ số, nó sẽ tự động chuyển đổi thành một con trỏ đến phần tử đầu tiên của mảng. Vì vậy,ptr = msg
gán địa chỉ của phần tử đầu tiên trong mảngmsg
cho con trỏptr
. Kiểu dữ liệu phù hợp (char *
).
Kết luận:
Phương án B đúng, phương án A sai.