Nếu có các khai báo sau:
Char msg[10] ;
Char *ptr;
Char value;
Câu nào sau đây là đúng:
Trả lời:
Đáp án đúng: B
Đề bài cho các khai báo:
- `char msg[10];` : Khai báo một mảng `msg` kiểu `char` có 10 phần tử.
- `char *ptr;` : Khai báo một con trỏ `ptr` kiểu `char`.
- `char value;` : Khai báo một biến `value` kiểu `char`.
Phân tích các phương án:
- **A. `ptr = value;`**: Sai. `ptr` là một con trỏ (lưu địa chỉ), còn `value` là một biến kiểu `char` (lưu giá trị). Không thể gán trực tiếp giá trị của `value` cho `ptr`. Cần phải gán địa chỉ của một biến kiểu `char` cho con trỏ `ptr`. Ví dụ: `ptr = &value;` (gán địa chỉ của `value` cho `ptr`).
- **B. `ptr = msg;`**: Đúng. `msg` là tên của mảng, trong nhiều ngữ cảnh (như trong phép gán này), nó tự động chuyển đổi thành địa chỉ của phần tử đầu tiên của mảng (tức là `&msg[0]`). Do đó, câu lệnh này gán địa chỉ của phần tử đầu tiên trong mảng `msg` cho con trỏ `ptr`. Vì `msg` là mảng kiểu `char` và `ptr` là con trỏ kiểu `char`, phép gán này hợp lệ.
- **C. Cả hai câu trên đều đúng.** Sai vì A sai.
- **D. Cả hai câu trên đều sai.** Sai vì B đúng.
Vậy, chỉ có phương án B đúng.





