Mảng và con trỏ trong C

mk có 2 vấn đề muốn hỏi về mảng trong C:
-thứ nhất:


trong sách mk học thì họ vẽ hình minh họa như này, ko hiểu là a: <các phần tử mảng> thì a chỉ là tên mảng hay là biến của mảng.???
-thứ 2 là mk thứ tạo 1 mảng rồi in %p của a, &a, &a[0] ra thì tụi nó y như nhau, ko lẻ a tự trỏ vào chính nó???
mk hơi hơi bối zối chỗ này, các chuyên gia giúp mk vs??? :thinking::thinking::thinking:

Cái này mảng tĩnh mới có bạn :smiley: mảng tĩnh thì nó hằng nên &a bằng a luôn.

3 Likes

a là một biến con trỏ.

&a[0] tương đương với a.

&a[1] tương đương với (a + 1).

&a[i] tương đương với (a + i).

2 Likes

thế thì lạ nhỉ, thế tạo sao a == &a

a là con trỏ tới phần tử đầu tiên của mảng.

&a là con trỏ tới toàn bộ mảng có n phần tử.

có thể thấy a + 1 khác &a + 1

1 Like

sao lại khác nhau như z bn??? ý mk là địa chỉ mảng cx là địa chỉ của phần tử đầu mà sao + 1 vào thì lại khác như z???

Khai báo mảng tĩnh trong C:

int a[10];

Sử dụng các phần tử của mảng:

a[i] = x
x = a[i]

Vậy sao có thể truy cập vào các phần tử của mảng thông qua []. :slight_smile:

Về cơ bản thì [] có thể coi là toán tử hai ngôi và được định nghĩa như thế này:

a[i] = *(a + i)

Do đó bạn có thể dùng là i[a] cũng không sai, bạn cứ việc thử. :slight_smile:

Dựa vào phép định nghĩa như trên thì ta thấy a phải là hằng con trỏ trỏ đến phần tử đầu tiên trong mảng a. (vì i là biến chạy rồi)

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?