指针小问题
main()
{
int a[3][3]={{34,42,5},
{7,8,23},
{12,82,98}
};
int *p;
p=a;
printf( "%d ",*(*(p+2)+1));/*我想用指针打出a[2][1],可这样不对的,书上好像是这样的?*/
getch();
}
[解决办法]
要这样去定义指向数组的指针,int (*p)[N],其中N是要指向的数组的列数.
所以楼主的程序可以改成:
int (*p)[3]=a;
printf( "%d ",*(*(p+2)+1));
[解决办法]
因为a是指向整型数组的指针..
所以把p定义为int (*p)[3];
------------------------
main()
{
int a[3][3]={{34,42,5},
{7,8,23},
{12,82,98}
};
int (*p)[3];
p=a;
printf( "%d ",*(*(p+2)+1));/*ÎÒÏëÓÃÖ¸Õë´ò³öa[2][1],¿ÉÕâÑù²»¶ÔµÄ,ÊéÉϺÃÏñÊÇÕâÑùµÄ?*/
}
[解决办法]
int *p;
p=(int*)a;
printf( "%d ",*(p+2*3+1));/*我想用指针打出a[2][1],可这样不对的,书上好像是这样的?*/
[解决办法]
不同的编译器有不同的结果
但是dev c++是通不过的.int* p; p=a;
显然p和a不是同一个数据类型,虽然都是指针.
如果你要输出a[2][1]的话,可以直接使用a.printf( "%d ",*(*(a+2)+1));