mấy anh cho em hỏi tại sao nó ra như vậy với.
Hỏi về con trỏ và mảng c++
Theo mình thì như này: trong mảng 1 chiều ở C/C++ thì tên mảng cũng là địa chỉ phần tử đầu tiên của mảng đó, ở đây a có kiểu char* nên lúc mình cout ra thì nó sẽ in ra các phần tử bắt đầu từ vị trí mà mình tham chiếu tới.
Trong mảng 1 chiều thì tên mảng là 1 con trỏ hằng trỏ đến địa chỉ phần tử đầu tiên trong mảng hay còn gọi là địa chỉ cơ sở. Các phần tử trong mảng đc tính dựa vào địa chỉ cơ sở này và offset (độ dời) ở đây là size kiểu dữ liệu của mảng.
cái toán tử <<
được cố tình nạp chồng để in ra các chuỗi trong C với một địa chỉ bắt đầu nào đó.
Như ví dụ trên thì bạn đưa cho nó địa chỉ của ô a[0] (Thực ra là một con trỏ, trỏ tới ô nhớ có địa chỉ của a[0]). Thế là nó tưởng bạn kêu, in cho tao chuỗi bắt đầu từ vị trí a[0]. Thế là nó sẽ ra từ ô nhớ đó đến khi nào gặp được ký tự NUL ( là \0 đó) thì dừng.
Tương tự cho các ví dụ sau.
Trong link trên cũng có nói, nếu muốn in ra địa chỉ thì bạn dùng hàm addressof
cám ơn ban nhiều, rất hay.