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ỏptrkiểuchar, có nghĩa làptrsẽ lưu địa chỉ của một biến kiểucharhoặc một chuỗi các ký tự (mảng các ký tự).char msg[10];: Khai báo một mảngmsggồm 10 ký tự. Tên mảng (msg) khi sử dụng trong biểu thức (ngoại trừ toán tửsizeofvà&) 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ếnvkiể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ìptrcầ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ảngmsgcho con trỏptr. Vìmsgtự độ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.





