JavaScript is required

Nếu có khai báo, câu nào sẽ đúng: char * ptr; char msg[10] char v;

A.

ptr=v;

B.

ptr=msg;

C.

Cả hai câu đều đúng

D.

Cả hai câu đều sai

Trả lời:

Đáp án đúng: B


Phân tích:

  • char *ptr;: Khai báo một con trỏ ptr kiểu char, có nghĩa là ptr sẽ lưu địa chỉ của một biến kiểu char 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ảng msg 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&) 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ến v kiểu char.

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

  • A. ptr = v;: Gán giá trị của biến v (kiểu char) cho con trỏ ptr (kiểu char*). Đâ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ảng msg 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ểu char*), phép gán này hợp lệ. Do đó, phương án này đúng.

Vậy đáp án đúng là B.

Câu hỏi liên quan