| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 276 人关注过本帖
标题:2维指针数组问题
只看楼主 加入收藏
Albert_D
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-23
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
2维指针数组问题
程序代码:
double average(double (*p)[],double *q,int n,int m)
{
    int i,j;
    
    double NU,AE;//每列总和与每行总和 
    for(i=0;i<n;i++)
    {
        for(NU=0,j=0;j<m;j++)
        {  
            NU+=(*p+i)[j];//每列的和 
        }
        q[i]=NU/m;//每行的平均值 
        AE+=NU;//每行的和 
    }
    return AE/(n*m);//总平均值 
}    


函数需求是求x行的平均值和总平均值
出错原因第1行平均值没错,第2行开始的都错!
初步认为错误原因在NU+=(*p+i)[j];这运算表达式!
开始是NU+=p[i][j];这样写的,但无法编译!只好改了
有人说NU+=(*P+i)[j]这实质是个1维数组,所以求不了第2行后的值!
怎么改才能求到值?
搜索更多相关主题的帖子: color 
2015-03-23 10:57
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:5 
注意(*p+i)和 *(p+i) 的区别。

授人以鱼,不如授人以渔
2015-03-23 11:03
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:5 
既然你给出的函数原型中n与m都给出了
为了清晰起见
不妨先不要用指针定义函数
而是所取更易让人理解的数组表示方式
等你熟练掌握之后
再采取你认为更合适的写法

程序代码:
#include <stdio.h>
#include <stdlib.h>

double average(int n, int m, double p[][m], double q[]) {
    int i, j;

    double sum_line = 0, sum_all = 0;

    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) {
            sum_line += p[i][j];
        }

        q[i] = sum_line / m;
        sum_all += sum_line;
        sum_line = 0;
    }

    return sum_all / n / m;
}

int main(void) {
    int i, j, n = 3, m = 5;
    double p[n][m], q[n], ave;

    puts("生成二维数组:");

    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) {
            p[i][j] = (i + j + 1.1) * (j + 1.2) / (i + 1.3);
            printf("%f  ", p[i][j]);
        }

        printf("\n"); 
    }

    ave = average(n, m, p, q);

    puts("打印行平均值:");

    for(i = 0; i < n; i++)
        printf("%f  ", q[i]);

    printf("\n打印总平均值:\n%f\n", ave);

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-23 16:14
快速回复:2维指针数组问题
数据加载中...
 
   



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

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