| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1497 人关注过本帖
标题:2维数组作为实参时的问题((*b)[5]传到函数 print里面直接乱码)
只看楼主 加入收藏
a1352414929
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-9-23
收藏
 问题点数:0 回复次数:8 
2维数组作为实参时的问题((*b)[5]传到函数 print里面直接乱码)
#include<stdio.h>

int main()
{
    double a[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };
   
    void print(double p[][5]);
    double* copy_1(double a[][5]);
    double(*b)[5] = copy_1(a);



    print(b);
   
}

double* copy_1( double a[][5])
{
    int i, j;
    double cop[3][5];

    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 5; j++)
        {
            cop[i][j] = a[i][j];
        }
    }

    return cop;
}

void print(double (*p)[5])
{
    int i, j;


    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 5; j++)
            printf("p[%d][%d] = %.1lf   ",i,j,p[i][j]);

        printf("\n");
    }
}
搜索更多相关主题的帖子: for double int 维数 print 
2020-09-23 19:21
a1352414929
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-9-23
收藏
得分:0 
想问问啥情况
2020-09-23 19:21
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
cop是局部变量
函数return 生命期结束 销毁
所以错了

https://zh.
2020-09-23 22:05
a1352414929
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-9-23
收藏
得分:0 
回复 3楼 lin5161678
图片附件: 游客没有浏览图片的权限,请 登录注册
[
图片附件: 游客没有浏览图片的权限,请 登录注册
附件]2[/附件]
 我今天有试着去调试一下程序,我发现你说的问题好像并不完全对,第一张图片时copy函数赋值给(*b)[5]程序运行结果,结果为b获得了cop 返回的地址。一直到传入print函数第一次使用都正确,可是第2次使用就直接乱码了(如图三)。我看了一下运行形参和实参都是同一个地址值,所有是不是在传入时第一次使用后指针所指的区域就直接被清空了。
2020-09-24 18:52
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 4楼 a1352414929
你这段描述我没有看到任意一个字和我的说法有冲突

https://zh.
2020-09-24 19:50
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
总之错误就是返回局部变量的指针是错误的做法
改正方法就是别返回局部变量的指针
你可以用static 你可以用malloc
方法任选

https://zh.
2020-09-24 19:51
a1352414929
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-9-23
收藏
得分:0 
回复 6楼 lin5161678
谢谢大佬,我现在是不是函数哪个知识点还没搞清楚
2020-09-24 20:15
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 7楼 a1352414929
这个和函数关系不大
单纯是一个对象生命期的问题
了解各种对象生命期就可以了

https://zh.
2020-09-24 20:35
a1352414929
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-9-23
收藏
得分:0 
谢谢
2020-09-24 21:30
快速回复:2维数组作为实参时的问题((*b)[5]传到函数 print里面直接乱码)
数据加载中...
 
   



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

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