| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:想让结构体的两个值都改变!怎么办?
只看楼主 加入收藏
aaaasix
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-10
收藏
 问题点数:0 回复次数:3 
想让结构体的两个值都改变!怎么办?
# include "string.h"
struct STU
{ char name[10];
int num ; };
void f(char * name, int num)
{ struct STU s[2]={{"sundan",20044},{"penghua",20045}};
num = s[0].num;
strcpy(name,s[0].name);
}
main()
{ struct STU s[2]={{"yangsan",2004},{"lisiguo",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
getch() ;
return(0);
}

它的答案是:sundan20042 !
它说是因为P->NAME为指针传递,会改变主函数的值,而P->NUM则是值传递,就不会改变!
我在想怎么样使P->NUM的值也改变?那在程序里应该怎么动下手脚?
还有啊:strcpy(name,s[0].name);这一句是什么意思?
可以用其它同功能的语句来代替吗?
我怎么改他都输出这个答案,要不就通不过!气死了!
搜索更多相关主题的帖子: 结构体 
2007-07-10 01:53
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
你把NUM的值也改成传址 让他和P->NUM公用同一个内存
# include "string.h"
#include<stdio.h>
struct STU
{ char name[10];
int num ; };
void f(char * name, int *num)
{ struct STU s[2]={{"sundan",20044},{"penghua",20045}};
*num = s[0].num;
strcpy(name,s[0].name);
}
main()
{ struct STU s[2]={{"yangsan",2004},{"lisiguo",20042}},*p;
p=&s[1];f(p->name,&p->num);
printf("%s%d\n",p->name,p->num);
return(0);
}

羊肉串 葡萄干 哈密瓜!!
2007-07-10 02:29
aaaasix
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-10
收藏
得分:0 

共用一个内存是什么意思?谁和谁共用?
还有啊, p=&s[1];f(p->name,&p->num);这一句中,p->name是传址,那么为什么p->num就不是传址呢?
他们看来一模一样啊?


总之,谢谢!

2007-07-10 18:50
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
以下是引用aaaasix在2007-7-10 18:50:34的发言:

共用一个内存是什么意思?谁和谁共用?
还有啊, p=&s[1];f(p->name,&p->num);这一句中,p->name是传址,那么为什么p->num就不是传址呢?
他们看来一模一样啊?


总之,谢谢!

p->name是数组 p->num是变量


羊肉串 葡萄干 哈密瓜!!
2007-07-10 21:42
快速回复:想让结构体的两个值都改变!怎么办?
数据加载中...
 
   



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

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