30/09/2018, 18:36

Hỏi về con trỏ và mảng c++

mấy anh cho em hỏi tại sao nó ra như vậy với.

Xuân Hòa viết 20:44 ngày 30/09/2018

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.

kethanbi viết 20:37 ngày 30/09/2018

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.

*grab popcorn* viết 20:37 ngày 30/09/2018

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
celtspirit

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

captain america viết 20:52 ngày 30/09/2018

cám ơn ban nhiều, rất hay.

Bài liên quan
0