如何修改结构里面包含的另结构的内容?

benjiam 2004-11-22 09:20:47
struct card
{
char name[20];
int age;
};

struct cardlian
{
struct card a;
int weight;
struct cardlian *;
};


cardlian 包含了一个card 结构

如果此时又一个cardlian指针
*p
那么修改 cardlian 里面的weight =10 可以用
p->weight = 10 来做到
如果要该a 结构里面的 age 应该怎么做呢?
我用了比较傻的办法
card *tp;
tp = &(p->a);
tp->age =10;
来做的
是否有简单直接的办法

还有一个问题
就是在函数里面我申请了 一个指针
在函数结束以后 是否就安全的被释放了?

void show( char *p)
{
char *tp;;

tp =p;
...
...


}

运行完以后是否要tp =0
来安全删除?
...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pomelowu 2004-11-22
  • 打赏
  • 举报
回复
1的一点补充:
给cardlian结构增加一个成员函数负责改变其中card结构a的age属性就行了。
积木 2004-11-22
  • 打赏
  • 举报
回复

1.struct cardlian
{
struct card a;
int weight;
struct cardlian * p;
};

cardlian c;
c.a.age =10;

2. 你要删除的不是指针,而是删除指针指向的资源(在必要的时候),tp = NULL;这句话在这个函数里面是不必要的,因为这个指针被安全的删除了,但是给指针赋空值是一个很好的编程习惯。
Willin 2004-11-22
  • 打赏
  • 举报
回复
1.tp->a.age;
2.不用,这个指针只是指向了一个地址而不是一块申请的地址,不会造成内存泄漏
doolin 2004-11-22
  • 打赏
  • 举报
回复
1.直接这样修改就可以了:
cardlian *p = new cardlian;
p->a.age = 20;

2.不需要,因为你并没有再内部用new表达式分配空间.如果用了tp = 0的话,可能导致程序出现比较难追踪的错误,因为这样改变了传递近来的参数的意义.

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧