标题:一个二维数组做参数传递的问题
只看楼主
檀痕哈哈
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:10
注 册:2016-10-18
结帖率:100%
 问题点数:0 回复次数:3 
一个二维数组做参数传递的问题
程序代码:
#include <stdio.h>
int f(int b[][4])
{
    int i,j,s=0;
    for(j=0;j<4;j++)
    {
        i=j;
        if(i>2)
            i=j-3;
        s+=b[i][j];
    }
    return s;
}
int main( )
{
    int a[4][4]={(1,2,3,4),(0,2,4,5),(3,6,9,12),(3,2,1,0)};
    printf("%d\n",f(a));
}

为什么这段代码的输出结果是4
搜索更多相关主题的帖子: 维数 参数 传递 int 代码 
2017-12-12 21:28
檀痕哈哈
Rank: 2
等 级:论坛游民
威 望:1
帖 子:12
专家分:10
注 册:2016-10-18
得分:0 
发现是自己在初始化数组时把大括号打成了小括号。。。。。
2017-12-12 22:11
新人学习
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:145
专家分:187
注 册:2017-10-26
得分:0 
对的 输出的是a[0][3]的数字
因为i=j-3;  此时的j的数字是3;
s+=b[i][j] 就相当是s+=b[0][3];
然后
main()
printf("%d\n",f(a));f(a)的返回值就是a[0][3]的值是4.  
2017-12-12 22:15
帅死不偿命
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:30
注 册:2017-10-9
得分:0 
那个形参是不用带下标
2017-12-13 11:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483329-1-1.html




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

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