|
发表于 2012-6-22 19:35:47
|
显示全部楼层
#include "stdafx.h"
int main ()
{
int score [][4] = {{60,58,62,63},{64,65,55,67},{68,69,70,71}};
int *search (int (*pointer)[4]);
int *p;
int i,j;
for (i = 0;i <= 2;i++)
{
if(search (score+i)) //这里我帮你做了个判断,因为你的那个函数里面便利数组的时候,若都及格了会返回NULL,然后p的值为NULL,后面继续*(p+j)肯定会报错。然后我这里做这个判断,P的值为NULL的时候会继续循环,而不会打印(*(p+j)).
{
p = search (score+i);
for (j = 0;j <= 3;j++)
{
printf ("%d\n",*(p+j));
}
}
else
continue;
}
return 0;
}
int *search (int (*pointer)[4])
{
int i;
for (i = 0;i <= 3;i++)
{
if (*(*pointer+i) < 60) //这里你之前写的是(*(*pointer)+i < 60).这里*pointer是指向成绩的指针int *类型,*(*pointer)已经是学生成绩了,所以你自己想想再+i是什么东东。
{
return *pointer;//返回的是指针型的数据啊。//这里你之前是*pointer+i.我改了,因为你要求的是,只要有一门不及格,就打印出这个学生的所有成绩,你+i返回的话,就会打印出从这个不及各的成绩开始后面的四门成绩,不合你的意思。
}
}
return NULL;
}
我这次解释的够详细了,代码里面的注释,就是你问题所在。。。我执行了没有任何问题。。。你粘代码的时候粘合适哦! |
|