JavaScript is required

Nếu có các khai báo sau: char msg[10] char *ptr; char value; Câu nào sau đây là đúng:

A.

ptr = value;

B.

ptr = msg;

C.

Cả hai câu trên đều đúng

D.
Cả hai câu trên đều sai
Trả lời:

Đáp án đúng: B


Phân tích câu hỏi:

Câu hỏi này kiểm tra kiến thức về con trỏ và mảng trong C, cụ thể là cách gán địa chỉ cho con trỏ.

Đánh giá các phương án:

  • A. ptr = value;: - `value` là một biến kiểu `char`, chứa một giá trị ký tự. Khi gán `value` cho `ptr`, trình biên dịch sẽ báo lỗi vì `ptr` là một con trỏ (lưu địa chỉ), còn `value` là một giá trị kiểu `char`. - Muốn gán giá trị của `value` vào địa chỉ mà `ptr` trỏ tới, ta phải dùng toán tử giải tham chiếu: `*ptr = value;` (với điều kiện `ptr` đã được gán một địa chỉ hợp lệ trước đó). - Do đó, phương án A sai.
  • B. ptr = msg;: - `msg` là một mảng kiểu `char` (chuỗi ký tự). Khi sử dụng tên mảng mà không có chỉ số, nó sẽ tự động chuyển đổi thành địa chỉ của phần tử đầu tiên trong mảng (tức là `&msg[0]`). - `ptr` là một con trỏ kiểu `char *`, có thể lưu trữ địa chỉ của một biến kiểu `char`. Vì vậy, việc gán `msg` cho `ptr` là hợp lệ vì chúng tương thích về kiểu. - Do đó, phương án B đúng.
  • C. Cả hai câu trên đều đúng: - Vì phương án A sai, phương án này cũng sai.
  • D. Cả hai câu trên đều sai: - Vì phương án B đúng, phương án này sai.

Kết luận:

Phương án B là đáp án đúng.

Câu hỏi liên quan