结构体
简单变量
通过函数获取需要传递二级指针 ( room * * r )
阅读(173) | 评论(0) | 转发(0) |
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
- typedef struct _room
- {
- int id;
- char name[32];
- int *p;
- int phone;
- }room;
-
- room g_room = { 1, "room", NULL, 123};
//指针取值
- void get_roomp(room **r)
- {
- *r = &g_room;
- }
- //变量取值
- void get_room(room *r)
- {
- memcpy(r, &g_room, sizeof(room));
- }
- void test_struct()
- {
- printf("%p, id = %d,%p, name = %s, %p, %p, phone = %d, %p\n",
- &g_room,
- g_room.id,
- &g_room.id,
- g_room.name,
- &g_room.name,
- &g_room.p,
- g_room.phone,
- &g_room.phone);
-
- room *r;
-
- get_roomp(&r);
- printf("%p, id = %d,%p, name = %s, %p, %p, phone = %d, %p\n",
- r,
- r->id,
- &r->id,
- r->name,
- &r->name,
- &r->p,
- r->phone,
- &r->phone);
-
- room rom;
- get_room(&rom);
- printf("%p, id = %d,%p, name = %s, %p, %p, phone = %d, %p\n",
- &rom,
- rom.id,
- &rom.id,
- rom.name,
- &rom.name,
- &rom.p,
- rom.phone,
- &rom.phone);
- }
简单变量
- int g_val = 1;
-
- //变量取值
- void get_val(int *v)
- {
- *v = g_val;
- printf("%p,%p\n", v, &v);
- }
-
- //指针取值
- void get_valp(int **v)
- {
- *v = &g_val;
- }
- void test_val()
- {
- printf("%p\n", &g_val);
- /*addr|val
- * | |
- * --|--|
- * &v|v |
- * --|--|
- * | |
- * --|--|
- * | |
- * --|--|
- */
- int v = 0;
- printf("%p\n", &v);
- get_val(&v);
- printf("%p, %d\n", &v, v);
- /*addr|val |val
- * | | | |
- * --|--| |--|
- * &p|p | |*p|
- * --|--| |--|
- * | | | |
- * --|--| |--|
- * | | | |
- * --|--| |--|
- */
- int *p;
- printf("%p\n", p);
- get_valp(&p);
- printf("%p, %d\n", p, *p);
- }
指针取值
通过修改指针的指向的地址(*p),不需要分配内存, * v = &g_val ;- void get_valp(int **v)
- {
- *v = &g_val;
- }
通过函数获取需要传递二级指针 ( room * * r )
- void get_roomp(room **r)
- {
- *r = &g_room;
- }
变量取值
1. memcpy
2. 一个个赋值,比较慢
- void get_room(room *r)
- {
- memcpy(r, &g_room, sizeof(room));
- }
2. 一个个赋值,比较慢
- void get_val(int *v)
- {
- *v = g_val;
- printf("%p,%p\n", v, &v);
- }
相关热门文章
给主人留下些什么吧!~~
评论热议