Tôi đang sử dụng C++ để hiểu chính xác con trỏ hoạt động như thế nào. Tôi có đoạn mã này sử dụng mảng, mà tôi đang sử dụng chỉ để hiểu cách hoạt động tương đương với con trỏ.Tại sao cout in mảng char khác với các mảng khác?
int main() {
int arr[10] = {1,2,3};
char arr2[10] = {'c','i','a','o','\0'};
cout << arr << endl;
cout << arr2 << endl;
}
Tuy nhiên khi tôi chạy này, arr
kết quả đầu ra địa chỉ của phần tử đầu tiên của mảng ints (như dự kiến) nhưng arr2
không ra địa chỉ của phần tử đầu tiên của mảng ký tự; nó thực sự in "ciao".
Tôi đang thiếu gì hoặc chưa học được điều này?
Theo [this] (http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/), nó chỉ bị quá tải cho khoảng trống *. Điều đó có nghĩa là nó có thể xác định nếu con trỏ trỏ đến ký tự, và nếu như vậy nó sẽ tìm ký tự đầu cuối và in chuỗi? (vẫn còn một chút stumped) – rmp251
@ rmp251: Missed [những] (http://www.cplusplus.com/reference/ostream/ostream/operator-free/)? –