C语言程序问题,关于二维数组与指针。急!!!

#include<stdio.h>
void main()
{
int score[3][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int *p1,*p2;
int i;
for(p1=score;p1<=score+2;p1=p1+4)/*score+i终究还是地址 */
for(p2=p1;p2<p1+4;p2++)
if(*p2<60)
{for(i=0;i<4;i++)
printf("%d ",*(p1+i));
printf("\n");
}
}

调试之后显示度的错误是下面这样:

--------------------配置: mingw2.95 - CUI Debug, 编译器类型: MinGW (Old)--------------------

检查文件依赖性...
正在编译 E:\c-free\新建文件夹\C-Free Standard\temp\未命名6.cpp...
[Error] E:\c-free\新建文件夹\C-Free Standard\temp\未命名6.cpp:7: assignment to `int *' from `int (*)[4]'
[Error] E:\c-free\新建文件夹\C-Free Standard\temp\未命名6.cpp:7: comparison of distinct pointer types `int *' and `int (*)[4]' lacks a cast

构建中止 未命名6: 2 个错误, 0 个警告

#include<stdio.h>
void main()
{
int score[3][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int *p1,*p2;
int i;
for(p1=*score;p1<=*(score+2);p1=p1+4)/*score+i终究还是地址 */
{
for(p2=p1;p2<p1+4;p2++)
{
if(*p2<60)
{
for(i=0;i<4;i++)
{
printf("%d ",*(p1+i));
}
printf("\n");
}
}
}
}

//score是二维的
//*p1和*p2是一维,所以p1=*score才能正确访问
//p1=*score;p1<=*(score+2);其余不变
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-16
void main()
{
int score[3][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int *p1,*p2;
int i;
for(p1=&score[0][0];p1<=&score[0][0]+9;p1=p1+4)/*score+i终究还是地址 */
for(p2=p1;p2<p1+4;p2++)
if(*p2<60)
{for(i=0;i<4;i++)
printf("%d ",*(p1+i));
printf("\n");
}
}
第2个回答  2010-11-16
#include<stdio.h>
void main()
{
int score[3][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int *p1,*p2;
int i;
for(p1=score[0];p1<score[0]+12;p1=p1+4)/*score+i终究还是地址 */
for(p2=p1;p2<p1+4;p2++)
if(*p2<60)
{for(i=0;i<4;i++)
printf("%d ",*(p1+i));
printf("\n");
}
}
第3个回答  2010-11-16
一方面,你说的是C的东西,你的文件却是C++的文件,第二就是指针使用的时候要先赋值,就是定义之后要先赋值才能用的
第4个回答  2010-11-16
应该是你的编译器的问题,在VC++中运行没有错误,并且能得出正确的答案,输出有不及格数的那一组数。检查一下你的编译环境配置吧!
第5个回答  2010-11-16
我用VC++6.0调试,程序正确。你的这个是C程序。但用是C++程序。把文件扩展名.ccp换为.c试试
相似回答