您的位置:首页 > 其它

c 语言中自定义Handel使用

2014-05-14 11:50 106 查看
项目中有个函数使用到了自定义的Handel,刚开始始终搞不懂是什么意思

具体看下:

typedef int handel

typedef struct node

{

int a;

int b;

char c[10];

}nd;

void connect(handel *han)

{

nd* nd1 = (nd*) malloc(sizeof(nd));

nd1->a = 10; nd1->b =20;

strcpy(nd1->c,"hello");

*han = (handel)nd1;

}

int main()

{

handel a;

connect(&a);

nd *nd2 = (nd*)a;

printf("%d\n",nd2->a);

printf("%s\n",nd2->c);

return 0;

}

通过程序发现,实际上Handel 存放是nd结构体的地址,通过强制可以相互转换。

既然程序的意思是想变改一个结构休,那为什么不直接把结构体系做为一个参数,直接传参呢,而采用传入一个int型来存储它的地址 。

我想应该是这样的,如果想让结构体创建在堆上,那么在函数外部必会出现 nd* nd1 = (nd*) malloc(sizeof(nd)); 而需要再修改它的数据,就要把nd1 的地址传到函数中,这样使用程序看起来更复杂,如果是在函数中使用malloc的话,只需要传入一个参数来记录它的地址 ,在不需要使用的时候 ,可以通过它的地址来free掉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: