|
10鱼币
如题:这样编写就能打印正确?请主要看红色部分:(小甲鱼的C语言的48课的课后题)方法一:
#include<stdio.h>
void main()
{
double score[][4]={60.0,70.0,80.5,90.5,56.0,89.0,67.0,88.0,34.2,78.5,90.5,100};
double *search(double (*pointer)[4]);
int *p;
printf("不合格的学生是:");
p=search(score);
printf("%d %d",*p,*(p+1));这种方法能正确打印。而下面我分开打印时*(p+1)的值就不对了!为什么呢?
printf("\n");
}
double *search(double (*pointer)[4])
{
int i,j;
int k[3],m=0;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(*(*(pointer+i)+j)<60.0)
{
k[m]=i;
m++;//printf("%d ",i);
}
}
}
return k;
}
方法二(非正确方法):
#include<stdio.h>
void main()
{
double score[][4]={60.0,70.0,80.5,90.5,56.0,89.0,67.0,88.0,34.2,78.5,90.5,100};
double *search(double (*pointer)[4]);
int *p;
printf("不合格的学生是:");
p=search(score);
printf("%d %d",*p);//这个值和上面一样。
printf("%d",*(p+1));//这个值就不对了,不知道为什么?求高手解答一下!
printf("\n");
}
double *search(double (*pointer)[4])
{
int i,j;
int k[3],m=0;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(*(*(pointer+i)+j)<60.0)
{
k[m]=i;
m++;//printf("%d ",i);
}
}
}
return k;
}
|
|