| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:结合体哪里有问题
只看楼主 加入收藏
鬼魅小杨
Rank: 1
来 自:西安
等 级:新手上路
帖 子:37
专家分:6
注 册:2012-12-22
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:11 
结合体哪里有问题
程序代码:
#include<stdio.h>
typedef struct{
    int a;
    char b;
}yang;
int main(){
  struct yang str1,*str2;

 str1.a=3;
str1->a=5;
str2.a=9;
str2->b='hun';
printf("%d,%d,%d,%c",str1,str2);
return 0;
}
2012-12-26 15:04
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:1 
结构体里面是没有问题,你的赋值好像是有问题的

有心者,千方百计;无心者,千难万难。
2012-12-26 15:07
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:5 
str1.a=3;
str1->a=5;
str2.a=9;
str2->b='hun';
------------
str1 是结构体 引用成员是用 '.'
str2 是结构体指针 引用成员是用 ‘->’

-------
printf("%d,%d,%d,%c",str1,str2);
这个明显不对了啊
2012-12-26 15:10
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:2 
小杨同学,貌似要这样哦
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct{
    int a;
    char b;
}yang;
int main(){
   yang str1,*str2;//已经typedef了,就直接yang做类型名号了
str1.a=3;
str1.b='c';//'.'点表示结构体成员运算,而str1在定义时已经分配了空间,所以a和b直接赋值
str2=(yang *)malloc(sizeof(yang));//str2是指针,没有分配空间,所以要malloc,你明白的
str2->a=9;
str2->b='h';//箭头是指向结构体成员运算符,指向明白吧,用于指针喽,链表中必备的运算符
printf("%d,%d,%c,%c",str1.a,str2->a,str1.b,str2->b);//这里要针对结构体的各节点分别输出,可不能输出结构体名啊,没意义的
return 0;
}
就这样

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-26 16:09
鬼魅小杨
Rank: 1
来 自:西安
等 级:新手上路
帖 子:37
专家分:6
注 册:2012-12-22
收藏
得分:0 
回复 4楼 yaobao
str2=(yang *)malloc(sizeof(yang));//str2是指针,没有分配空间,所以要malloc,这我不是很明白

寄意寒星荃不察,我以我血荐轩辕。
2012-12-26 17:21
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
变量用点,指针用箭头。

www.qunxingw.wang
2012-12-26 17:37
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:2 
回复 5楼 鬼魅小杨
你在定义一个指针str2时,str2自己是有空间的,大小是一个计算机字,但是他要指向的一个yang类型数据却没有分配空间啊,而楼主要输入的数值是存储在yang类型数据里的,说以要malloc向内存申请一个yang类型数据将他的地址赋值给str2,之后才能输入数据

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-26 18:24
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
好多星星

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-26 18:31
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:10 
以下是引用yaobao在2012-12-26 16:09:57的发言:

小杨同学,貌似要这样哦#include
#include
typedef struct{
    int a;
    char b;
}yang;
int main(){
   yang str1,*str2;//已经typedef了,就直接yang做类型名号了
str1.a=3;
str1.b='c';//'.'点表示结构体成员运算,而str1在定义时已经分配了空间,所以a和b直接赋值
str2=(yang *)malloc(sizeof(yang));//str2是指针,没有分配空间,所以要malloc,你明白的
str2->a=9;
str2->b='h';//箭头是指向结构体成员运算符,指向明白吧,用于指针喽,链表中必备的运算符
printf("%d,%d,%c,%c",str1.a,str2->a,str1.b,str2->b);//这里要针对结构体的各节点分别输出,可不能输出结构体名啊,没意义的
return 0;
}
就这样
非常赞成你的说法

思考赐予新生,时间在于定义
2012-12-26 18:43
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
到哪里弄100分

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-26 18:46
快速回复:结合体哪里有问题
数据加载中...
 
   



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

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