| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 666 人关注过本帖
标题:C语言返回指针的问题,请能者解答
只看楼主 加入收藏
wangyongzhi0
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-30
收藏
 问题点数:0 回复次数:5 
C语言返回指针的问题,请能者解答

设有七个学生,每个学生有4门成绩。编写一个函数,输入学生序号,输出其全部成绩,用指针函数实现.(教科书上的源程序)
#include <stdio.h>
float *seek(float(*p)[4],int n)
{
return*(p+n-1);
}
void main(void)
{
float score[][4]={{67.5,54.5,56,72},{90,86.5,88,82},{62,66,70,57},{88,91,95,87},{73,78,80,82}
{79,70,67.5,75},{68,73,71,79}};

int nun;
float *sp,*tp;
print("input number");
scanf("%d",&num);
sp=seek(score,num);
print("\n");
for(tp=sp;tp<sp+4;tp++)
print("%6.12f",*tp);
}
我觉得其中return*(p+n-1);应该改为return p+n-1;因为是返回指针啊,如果按照源程序的话,比如我输入3返回的应该是62,66,70,57不知道对不对,请高手指点下哈

 还有,这样一段代码,

int a[5];
int *p;
p=a;
*(p+2)=5;
当执行完最后一条语句后,p指向什么地方啊

搜索更多相关主题的帖子: C语言 能者 指针 解答 
2007-06-01 19:46
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

int a[5];
int *p;
p=a;
*(p+2)=5;
当执行完最后一条语句后,p指向什么地方啊

p还是指向数组开头...
改不改自己调试哈就知道了...


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-06-01 19:53
wangyongzhi0
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-30
收藏
得分:0 
谢谢了,不过第一题我还没弄清楚啊是怎么回事哦
2007-06-03 03:57
a51795108
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-4-27
收藏
得分:0 

这个问题是这样的:有点点语法错误不知道是不是哦  我安自己的思路来  不知道是不是符合你的本意!
      主函数里面的是一个二维数组,SEEK调用的是SCORE的首地址,那么P是指向SCORE的首地址的
  *P是第一行的首地址 *(P+N-1)才是第N行的首地址 你要的是第N行的  所以要返回*(P+N-1)

2007-06-04 17:12
wangyongzhi0
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-5-30
收藏
得分:0 
谢了
2007-06-09 20:20
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 
行地址.......(*p)[3]是指向一个列为3的数组的,p是行指针,对他解析后里边还是地址.如:
int (*p)[3],a[3][3];
如果令p=a;
则有*p=a[0]=&a[0][0];
ok?????

偶是菜鸟鸟偶惧WHO?!!!!
2007-06-09 20:51
快速回复:C语言返回指针的问题,请能者解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020431 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved