首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

指针小疑点

2012-02-22 
指针小问题main(){inta[3][3]{{34,42,5},{7,8,23},{12,82,98}}int*ppaprintf( %d ,*(*(p+2)+1))/*

指针小问题
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));

热点排行
Bad Request.