Hỏi về địa chỉ của phần tử trong mảng nhiều chiều

giả sử mình có khai báo

int a[3][3];
int b[3][3][3];

nếu như địa chỉ của a[0][0] là 100 , của b[1][1][1] là 1000 thì địa chỉ của a[1][2] , b[2][1][2] là bao nhiêu ạ và cách tìm như thế nào ?

nếu địa chỉ a[0][0] là 100 thì a[1][2] là 120, nếu b[1][1][1] là 1000 thì b[2][1][2] là 1040. :wink:

Tính thế nào vậy bạn ?

Kiểu int thì chiếm 4 bytes, cho nên a[0][0] sẽ chiếm các địa chỉ từ 100 đến 103 (đúng 4 bytes), địa chỉ của 1 biến hay 1 phần tử của mảng là địa chỉ đầu tiên (ở đây là 100). Cho nên a[0][1] sẽ chiếm từ 104 đến 107, có địa chỉ là 104.


Mảng hai chiều hay mảng ba chiều khi lưu trong bộ nhớ cũng chỉ là mảng một chiều mà thôi :wink: . a[0][1] nối tiếp a[0][0]. Tương tự, a[1][0] sẽ nối tiếp a[0][2]. Nếu a[0][2] có địa chỉ là 100, thì a[1][0] có địa chỉ là 104.

Mình cứ nghĩ a[0][0] là 100 thì a[0][1] là 101. Cảm ơn bạn.

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