| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1361 人关注过本帖, 1 人收藏
标题:关于结构体的一点疑惑
取消只看楼主 加入收藏
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
结帖率:96.55%
收藏(1)
已结贴  问题点数:50 回复次数:4 
关于结构体的一点疑惑
程序代码:
好久没有接触c语言了,偶尔看到一个关于结构体的程序,代码如下:其中有两个函数,我明显觉得函数func2比函数func1要简洁,更容易懂,但为什么很多代码上要用函数func1这种形式,形参要用指针的指针,不是更难懂了吗?                     难道是我忘了什么重要的东西?
#include <stdio.h>
#include <stdlib.h>
typedef struct temp
{
    int e;
}*TEMP;
void func1(TEMP *x)
{
    printf("(*x)->e=%d\n",(*x)->e);
    printf("x=%d\n",x);
}
void func2(TEMP x)
{
    printf("(x)->e=%d\n",(x)->e);
    printf("x=%d\n",x);
}
int main()
{
    TEMP m=(TEMP)malloc(sizeof(struct temp));
    m->e=5;
    func1(&m);
    func2(m);
    return 0;
}
搜索更多相关主题的帖子: 结构体 c语言 
2013-10-25 21:18
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
回复 6楼 rchunjiang
我个人的想法如下,不知道对不对.
1,用func2也能改变m的值,因为m本身就是一个地址值,如下所示:
   
程序代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct temp
{
    int e;
}*TEMP;
void func1(TEMP *x)
{
    printf("(*x)->e=%d\n",(*x)->e);
}
void func2(TEMP x)
{
    printf("(x)->e=%d\n",(x)->e);
    x->e=7;
}
int main()
{
    TEMP m=(TEMP)malloc(sizeof(struct temp));
    m->e=5;
    func1(&m);
    func2(m);
    printf("(m)->e=%d\n",(m)->e);
    return 0;
}
结果为:
(*x)->e=5
(x)->e=5
(m)->e=7
2,m和&m都是地址的值,所以…………


[ 本帖最后由 佳嘉 于 2013-10-26 09:04 编辑 ]
2013-10-26 09:02
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
回复 4楼 qunxingw
我觉得返回ok或者false,是看函数是否达到了预想的执行效果
2013-10-26 09:17
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
回复 12楼 rchunjiang
有点明白了,看来和你的差距,还非常大,谢谢回答呀
2013-10-27 14:39
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
回复 18楼 rchunjiang
这个账号是马甲不?
2013-10-31 21:41
快速回复:关于结构体的一点疑惑
数据加载中...
 
   



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

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