文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C语言实例38:二维数组指针

C语言实例38:二维数组指针

时间:2010-06-24  来源:hnrainll


/*****
关于数组指针的理解:
void average(float *point, int n);
void search(float (*point)[4], int n);
上面是函数申明。
average(*score, 16);
search(score, num);
这里是函数调用。
同是 指针,为什么两个实参不一样。
这里是二维数组指针,分为3级.
对于该数组我们可以理解为:score的一维数组(第一层),它有四个元素score[0]、score[1]、score[2]、score[3](第二层),
而每个元素又含有4个元素score[0][0],score[0][1],score[0][2],score[0][3](第三层)…
到此我们终于访问到了每个元素了,这个过程我们经历了:score->score[0]->score[0][0];

这里void average(float *point, int n);*point定位于第三层了。
我们实参传递时,就要是他上一层,也就是第二层*score.

这里void search(float (*point)[4], int n); (*point)[4]定位于第二层。
我们实参传递时,就要是他上一层,也就是第一层score.
*******/
#include <stdio.h>
#include <stdlib.h>

void average(float *point, int n);
void search(float (*point)[4], int n);

int main(int argc, char *argv[])
{
    int num;

    static float score[4][4] = {{76, 90, 92, 87},{68, 78, 69, 94},{89, 82, 81, 60},{81, 68, 60, 97}};
    printf("班级的总平均分:");
    average(*score, 16);

    printf("请输入学生的学号(0-3):");
    scanf("%d", &num);
    search(score, num);

    system("pause");
    return 0;
}

void average(float *point, int n)
{
    float *p_end;
    float aver;
    float sum = 0;
    p_end = point + n - 1;
    for(; point <= p_end; point++)
        sum = sum+(*point);
    aver = sum/n;
    printf("%5.2f\n",aver);
}

void search(float (*point)[4], int n)
{
    int i;
    for(i = 0; i < 4; i++)
        printf("%5.2f,",*(*(point+n)+i));
    printf("\n");
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载