为什么声明一个如int a[5][5]数组之后,对其初始化a[2][3]=5不可以,书上有说需要在开头声明并用一种形式初始化,但是为什么指针形式的
(*(a+2)+5)=5却可以呢,
#include
void copy(int(*ac)[8], int(*ar)[8], int c, int d, int a);
int main(void)
{
int c, i;
int copyc[3][8];
int num[3][8] = {
{ 3, 4, 5, 6, 7, 8, 9, 1 },
{ 3, 4, 5, 6, 7, 8, 9, 1 },
{ 3, 4, 5, 6, 7, 8, 9, 1 }
};
copy(copyc, num, 2, 3, 3);
for (i = 0; i < 3; i++) {
for (c = 0; c < 8; c++)
printf(" %d", *(*(copyc + i) + c));
printf("\n");
}
getchar();
return 0;
}
void copy(int (*ac)[8], int(*ar)[8], int d, int c, int a)
{
int n;
for (n = 0; n <a; n++)
{
*(*(ac + d) + c +n-1) = *(*(ac + d) + c+n-1);
}
}