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.
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.
stackoverflow.com
what is the difference between a[0] and &a[0] in string
c++, string
asked by
celtspirit
on 11:22PM - 26 Jan 15
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
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.
what is the difference between a[0] and &a[0] in string
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.