| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 495 人关注过本帖
标题:求助 关于 返回指针值的函数 的问题 书上的一个程序 不懂
只看楼主 加入收藏
菜鸟auto
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:100
注 册:2010-7-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
求助 关于 返回指针值的函数 的问题 书上的一个程序 不懂
/*有若干个学生的成绩(每个学生4门课程),找出其中不及格课程的学生及其学生号*/
#include<stdio.h>
int main()

{
    float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
    float*search(float(*pointer)[4]);
    float *p;
    int i,j;
    for(i=0;i<3;i++)
           {
              p=search(score+i);
              if(p==*(score+i);
                  {
                     printf("No.%d scores:",i);
                     for(j=0;j<4;j++)
                         printf("%5.2f",*(p+j));
                     printf("\n");
                   }
            }
}


float *search(float(*pointer)[4])
  {
     int i;
     float *pt;
    pt=*(pointer+1);// pointer不是指向一个一维数组吗? 为什么书上解释pointer+1是把pt指向本行的末尾,而不是指向数组的下一个元素呢?
     for(i=0;i<4;i++)
        if(*(*pointer+i)<60) pt=*pointer;
     return(pt);
  }


这是谭浩强第267页的一个程序,请高手解释一下。书上的解释看不明白?在网站上找到过类似的例子。但还有一处不懂。

[ 本帖最后由 菜鸟auto 于 2011-3-8 21:35 编辑 ]
搜索更多相关主题的帖子: search 
2011-03-08 21:32
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:7 
假如pointer的地址设为0001H 而这里pointer的类型是 float (*)[4] 所以pointer是一行的首地址
当你对pointer+1的时候,pointer+1就会跨过pointer的一行 从而pointer+1就是第二行的首地址 
所以可以把pointer+1说成指向末尾(末尾?该改成是第二的开始吧)

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2011-03-08 23:10
新手写程序
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:120
注 册:2011-3-5
收藏
得分:7 
pointer + 1  是指向下一个数组吧
如果pointer == 0
pointer + 1 就指向 score[1]       [...]
2011-03-08 23:14
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:7 
回复 楼主 菜鸟auto
*pointer+1才是指向下一个单元地址,看下二维数组的表示吧,还有指针数组和数组指针。
2011-03-08 23:39
快速回复:求助 关于 返回指针值的函数 的问题 书上的一个程序 不懂
数据加载中...
 
   



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

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