|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
double a[3][4]={{80.5,90.0,96.5,66.0},{80.5,70.5,76.5,66.0},{70,85.5,99.0,69.5}};
int i,j;
double *p;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(*(*(p+i)+j)<60.0)
{
printf("%d bu ji ge\n",i);
break;
}
}
}
}
二维数组代表三名同学的四科成绩,检查出来有不及格成绩的同学。
不知为何无法正常运行
你对指针的一些概念了解的还不够多,这个问题应该是数组指针的使用,而非函数指针。 指针数组与数组指针详解
改后的代码以及改之前的问题已在下面列出:
- #include <stdio.h>
- //修改后的代码
- int main()
- {
- double a[3][4]={{80.5,50.0,96.5,66.0},{80.5,70.5,76.5,66.0},{70,85.5,99.0,69.5}}; //改了a[0][1],测试不及格时的输出
- int i,j;
- double (*p)[4]; //(*pointer)[n]定义数组长度为n的数组指针
- p = a; //数组指针p指向2维数组a
- for(i=0;i<3;i++)
- {
- for(j=0;j<4;j++)
- {
- if (*(*(p+i)+j)<60){ //p
- printf("The Score of [%d][%d] is %f . bu ji ge\n",i,j,*(*(p+i)+j));
- }
- }
- }
- }
- //原来的代码
- //#define F2_MAIN_SWITCH
- #ifdef F2_MAIN_SWITCH
- #include <stdio.h>
- int main()
- {
- double a[3][4]={{80.5,90.0,96.5,66.0},{80.5,70.5,76.5,66.0},{70,85.5,99.0,69.5}};
- int i,j;
- double *p; //这表示定义了一个double指针,首先p是未初始化的野指针,其次它不是数组指针
- for(i=0;i<3;i++)
- {
- for(j=0;j<4;j++)
- {
- if(*(*(p+i)+j)<60.0) //再次,*(p+i)取到的是个类型为double的数值,不能再进行取值运算
- {
- printf("%d bu ji ge\n",i);
- break;
- }
- }
- }
- }
- #endif
复制代码
|
|