关于C语言返回指针值的函数问题
这是目标函数#include <stdio.h>
int main()
{
double score[] = {{80.0,79.5,90.0,70.5},{90.5,60.0,66.5,79.5},{70.5,60.0,90.0,79.5}};
double *search(double(*pointer),int n);
double *p;
int i,m;
printf("please enter the number of student:");
scanf("%d",&m);
printf("The scores of No.%d are:\n",m);
p = search(score,m);
for(i=0;i<4;i++)
{
printf("%5.2f\t",*(p+i));
printf("\n");
}
}
double *search(double (*pointer),int n)
{
double *pt;
pt = *(pointer+n);
return pt;
}
这是我自己打的函数
#include <stdio.h>
double *search(double *(a),int n)
{
double *pt;
pt = *(a+n);
return pt;
}
int main()
{
int b;
double *p,score = {{80.5,70,90,65.5},{55.5,60,96,70.5},{90.5,91,99,85}};
scanf("%d",&b);
printf("the NO.%d student's score is \n");
p = search(score,b);
for(;p<p+4;p++)
{
printf("%lf\n",*p);
}
}
不知道为啥我打的不能编译,大概就是输入数字从而得出几号同学的成绩,麻烦大神指导一下,多谢 指针数组和数组指针的区别
search的第一个参数应该是一个数组指针,double (*pointer)
但是你的程序中写的是一个指针数组,(double *(a)
你自己看看这俩的区别,括号的位置不一样
自己在哈哈学习一下指针数组和数组指针的区别吧 sunrise085 发表于 2021-1-27 17:13
指针数组和数组指针的区别
search的第一个参数应该是一个数组指针,double (*pointer)
但是你的程序中 ...
这点已改正,还有最后那个for循环,我发现不能用p++来输出,而是需要用i++然后输出*(p+i)这里也不太理解 阿Cxi 发表于 2021-1-27 18:01
这点已改正,还有最后那个for循环,我发现不能用p++来输出,而是需要用i++然后输出*(p+i)这里也不太理解
可以用p++来输出,但是循环结束条件错了。 本帖最后由 阿Cxi 于 2021-1-27 20:10 编辑
xieglt 发表于 2021-1-27 18:51
可以用p++来输出,但是循环结束条件错了。
请问应该用什么呢,如果能解答下的话多谢了 阿Cxi 发表于 2021-1-27 20:08
请问应该用什么呢,如果能解答下的话多谢了
#include <stdio.h>
double *search(double (* a),int n)
{
double *pt;
pt = *(a+n);
return pt;
}
int main()
{
int b;
double *q;
double *p,score = {{80.5,70,90,65.5},{55.5,60,96,70.5},{90.5,91,99,85}};
scanf("%d",&b);
printf("the NO.%d student's score is \n");
p = search(score,b);
/*
1、用别的变量作循环计数
比如
for(b=0 ; b< 4 ; b++)
{
printf("%lf\n",*p++);
}
*/
//2、定义一个指针变量,先计算出循环结束的地址
//比如 doubel * q = p + 4;
//for(;p<q; p++)
q = p + 4;
for(; p<q ; p++)
{
printf("%lf\n",*p);
}
return 0;
}
页:
[1]