当前位置: 代码迷 >> C语言 >> 有一点不明白请大家说一下原因
  详细解决方案

有一点不明白请大家说一下原因

热度:163   发布时间:2008-04-04 23:04:44.0
有一点不明白请大家说一下原因
#include "stdio.h"
#include "conio.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 scrers:",i);
            for(j=0;j<4;j++)
                printf("%5.1f",*(p+j));
                printf("\n");
        }
    }
        getch();
        return 0;
}


float *search (float (*pointer)[4])
{
    int i;
    float *pt;
    pt=*(pointer+1);        //请问    *(pointer+1)指向哪里..为什么呢..不明白???
    for(i=0;i<4;i++)
        if(*(*pointer+i)<60)
            pt=*pointer;
        return pt;
}
----------------解决方案--------------------------------------------------------
pointer是指向一维数组的指针,而且这个数组有四个float型元素
加1指向下一组数组
例如:
pointer初值指向{60,70,80,90}
加1后就指向{56,89,67,88}
----------------解决方案--------------------------------------------------------
为什么老潭的书说*(pointer+1)指向数组尾呢..我的理解和楼上是一样的.
----------------解决方案--------------------------------------------------------
回复 3# 的帖子
数据在内存存储数组是连续的地址,,指向数组尾就是指向下一个一维数组的首地址。这样理解应该对吧?
----------------解决方案--------------------------------------------------------
  相关解决方案