免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: DesignInside
打印 上一主题 下一主题

[C] 结构体指针的指针 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-11-18 16:15 |只看该作者

回复 #8 net_robber 的帖子


我没办法上传代码...

不过我要修改的的确是指针指向的空间

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
12 [报告]
发表于 2008-11-18 16:17 |只看该作者
原帖由 cugb_cat 于 2008-11-18 16:06 发表
vvv(ui_temp).
这样可以。


nod。本身传给函数的就是这个结构体的地址

论坛徽章:
0
13 [报告]
发表于 2008-11-18 16:20 |只看该作者
原帖由 net_robber 于 2008-11-18 15:59 发表
(struct user *) * p
(void *) * p
int * p
int p


都是一样的

不知所云……我太笨?
希望对楼主有帮助:指针是通往地狱的捷径

论坛徽章:
0
14 [报告]
发表于 2008-11-18 16:33 |只看该作者
....很烦人的指针

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
15 [报告]
发表于 2008-11-18 17:13 |只看该作者
ui_temp是个user指针,由init_user分配空间。

你要是改变ui_temp指向的空间,只用传ui_temp就可以了。

如果你想重新分配ui_temp的空间,即将ui_temp指向另一个空间。才要传入&ui_temp。

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
16 [报告]
发表于 2008-11-18 19:29 |只看该作者

  1. #include<iostream>

  2. using namespace std;

  3. typedef struct _user
  4. {
  5.     int id;
  6.     int age;
  7. }user;

  8. user *init_user()
  9. {
  10.     user *ui;
  11.     ui = (user*)calloc(1, sizeof(user));
  12.     return ui;
  13. }

  14. void vvv1(user *tmp)
  15. {
  16.     tmp->id = 2;
  17.     tmp->age = 21;
  18. }

  19. void vvv2(user **tmp)
  20. {
  21.     user *a;
  22.     a = init_user();
  23.     a->id = 4;
  24.     a->age = 30;

  25.     user *b;
  26.     b = *tmp;
  27.     *tmp = a;
  28.     free(b);
  29. }

  30. int main()
  31. {
  32.     user *ui_temp;
  33.     ui_temp = init_user();
  34.     ui_temp->id = 1;
  35.     ui_temp->age = 5;

  36.     cout<<"before, ui_temp->id: "<<ui_temp->id<<"\tui_temp->age: "<<ui_temp->age<<endl;
  37.     vvv1(ui_temp);
  38.     cout<<"after vvv1(), ui_temp->id: "<<ui_temp->id<<"\tui_temp->age: "<<ui_temp->age<<endl;
  39.     vvv2(&ui_temp);
  40.     cout<<"after vvv2(), ui_temp->id: "<<ui_temp->id<<"\tui_temp->age: "<<ui_temp->age<<endl;

  41.     free(ui_temp);
  42.     return 0;
  43. }
复制代码


  1. -bash-3.2$ ./ptr
  2. before, ui_temp->id: 1  ui_temp->age: 5
  3. after vvv1(), ui_temp->id: 2    ui_temp->age: 21
  4. after vvv2(), ui_temp->id: 4    ui_temp->age: 30
复制代码


vvv1是传指针,vvv2是传指针的指针。

论坛徽章:
0
17 [报告]
发表于 2008-11-19 09:12 |只看该作者

回复 #16 yangsf5 的帖子


谢啦 兄弟 so nice man

帮你打下广告 呵呵

##################
linux c/c++ 网络服务器开发
QQ group:25682102
期待您加入交流探讨。
(夯实的同时,灌水拉人先)

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
18 [报告]
发表于 2008-11-19 10:18 |只看该作者
原帖由 DesignInside 于 2008-11-19 09:12 发表

谢啦 兄弟 so nice man

帮你打下广告 呵呵

##################
linux c/c++ 网络服务器开发
QQ group:25682102
期待您加入交流探讨。
(夯实的同时,灌水拉人先)

兄台眼力不错。。
眼力好,对编程也有帮助。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
19 [报告]
发表于 2008-11-19 10:24 |只看该作者
原帖由 yangsf5 于 2008-11-19 10:18 发表

眼力好,对编程也有帮助。。

严重同意。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP