Cả hai không giống nhau. Cách thứ hai là con trỏ tới một mảng là int
.
Bạn có thể sử dụng khai báo như một tham số hàm khi truyền một mảng 2D làm tham số. Ví dụ, với chức năng này:
void f(int (*ar)[5]) // array size required here to do pointer arithmetic for 2D array
{
...
}
Bạn có thể gọi nó là như thế này:
int a[5][5];
f(a);
Một ví dụ khác như một tham số địa phương:
int a[5] = { 1,2,3,4,5 };
int (*ar)[]; // array size not required here since we point to a 1D array
int i;
ar = &a;
for (i=0;i<5;i++) {
printf("a[%d]=%d\n", i, (*ar)[i]);
}
Output:
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
Sorry.Edited mà ra. Cảm ơn bạn. – Neer
["khai báo p là mảng con trỏ tới int"] (https://cdecl.org/?q=int+*p+%5B%5D), ["khai báo ar là con trỏ tới mảng int"] (https://cdecl.org/?q=int+%28*ar%29+%5B%5D) – kay
Hãy xem [câu trả lời này] (https://stackoverflow.com/a/30345939/4265352) về một câu hỏi tương tự. – axiac