指针数组的输出(二维数组)
今日问题:
#include<stdio.h>
int main()
{
int a[3][3];
int i, j;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
scanf("%d", &a[i][j]);
int* p = &a[2];
for (i = 0; i < 3; i++)
printf("%d",*((*p)+j));
printf("\n");
p = &a[2];
for (j = 0; j < 3; j++)
printf("%d", *(a[1]+j));
return 0;
}
int main()
{
char *str[] = {
"春眠不觉晓",
"处处闻啼鸟"
};
printf("%s", str[1]);
printf("\n");
return 0;
}
void main()
{
int a[3][3], i, j;
printf("please input :\n");
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
scanf("%d", *(a + i) + j);
printf("the second line is:\n");
for (j = 0; j < 3; j++)
printf("%5d", *(*(a + 1) + j));
printf("\n");
}
int main()
{
char* str[] =
{
"春眠不觉晓",
"处处闻啼鸟","夜来风雨声","花落知多少"
};
printf("答案是:\n");
printf("%s", str[2]);
printf("\n");
return 0;
}
int main()
{
int a[2][2], i, j;
printf("please input :\n");
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
scanf("%d", *(a + i) + j);
printf("%d", a[1]);
printf("\n");
printf("%d", *( * (a + 1)));
return 0;
}
总结:*(a+n) =a[n] 这个是地址
*( * (a + 1)) 这个才是内容
&a[n] 是第n行的首地址
*(*(a+n)+m)和*(a[n] + m)都是代表第n行第m列