Em có 1 hàm xuất ma trận:
void xuatMaTran(int(*a)[5], int m, int n)
{
int i, j;
for (i = 0;i < m;i++) {
for (j = 0;j < n;j++) {
printf("\na[%d][%d]: %d", i, j, *(*(a + i) + j));
}
}
}
int main() {
int a[2][5] = { 1,2,3,4,5,6,7,8,9,10 }, m = 2, n = 5;
xuatMaTran(a, m, n);
}
Khi gọi xuatMaTran(a,m,n);
thì nó sẽ truyền địa chỉ phần tử đầu tiên của ma trận vào hàm.
Vậy cho em hỏi int(*a)[5]
nghĩa là sao, tại sao khi em bỏ [5]
lại báo lỗi ?
Và tại sao em không thể dùng int**a
để thay thế cho int(*a)[5]
, mặc dù biết a trong hàm là con trỏ cấp 2?