| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 800 人关注过本帖
标题:这两个定义有什么区别啊??
只看楼主 加入收藏
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
结帖率:85.71%
收藏
 问题点数:0 回复次数:12 
这两个定义有什么区别啊??

这两个定义有什么区别啊?

typedef struct xy {
int x, y;
struct xy *pxy;
}xy;

typedef struct {
int x, y;
struct xy *pxy;
}xy;

搜索更多相关主题的帖子: 定义 
2007-09-22 12:46
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
暂时明白了呵呵 其实很简单 一个是 xy 取代了 struct xy{}
一个是 xy 取代了 struct {}, 没有结构名字 也能定义结构啊??

计算机之路是痛苦并快乐着的!!
2007-09-22 12:56
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
严格来说第一种有问题,因为结构体名和变量名冲突.
typedef struct xy //这里是类名.
{
int x, y;
struct xy *pxy;
}x;//这里写的是变量名列表

可以直接定义
typedef struct {
int x, y;
struct xy *pxy;//这个是不行的,因为类名不存在
}xy;


倚天照海花无数,流水高山心自知。
2007-09-22 13:05
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
同上!

方寸之内,剖天下; 方坛之内,析自我;
2007-09-22 13:10
zmfttkl
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2007-7-1
收藏
得分:0 
赞同撒!

2007-09-22 13:16
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 

有趣哈 第二种其实还是有点问题的
就是这种typedef struct {
int x, y;
struct xy *pxy;
}xy;
比如说我在main中下列代码就会报警告

xy *pxy1, *pxy2;
pxy1 = (xy*)malloc(sizeof(xy));
pxy2 = (xy*)malloc(sizeof(xy));
pxy1 -> pxy = pxy2; 此处报警告 因为编译器 认为你 将两个不同类型的指针互相 给值
其中pxy2 是xy*类型 赋给了 pxy1 是struct xy*类型


计算机之路是痛苦并快乐着的!!
2007-09-22 13:22
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
说错了 郁闷 是xy*类型的pxy2赋给了 struct xy*类型的 pxy1->pxy

计算机之路是痛苦并快乐着的!!
2007-09-22 13:24
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
struct xy *pxy;//这个是不行的,因为类名不存在
补充一下,你这个struct结构中xy只是变量
可以直接xy *pxy

You have lots more to work on! Never give up!c language!
2007-09-22 14:22
chllin
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-9-14
收藏
得分:0 

typedef struct xy{
int x, y;
struct xy *pxy;
}xy;

int main(void)
{
xy *pxy1, *pxy2;
pxy1 = (xy*)malloc(sizeof(xy));
pxy2 = (xy*)malloc(sizeof(xy));
pxy1 -> pxy = pxy2;
return 0;
}


2007-09-22 15:49
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
回复:(栖柏)struct xy *pxy;//这个是不行的,因为类...

你的意思是这样写吗?
#include <stdio.h>
#include <stdlib.h>

typedef struct {
int x, y;
xy *pxy;
}xy;

int main(void)
{
xy *pxy1, *pxy2;
pxy1 = (xy*)malloc(sizeof(xy));
pxy2 = (xy*)malloc(sizeof(xy));
pxy1 -> pxy = pxy2;
return 0;
}
vc6.0编译出错


计算机之路是痛苦并快乐着的!!
2007-09-22 16:08
快速回复:这两个定义有什么区别啊??
数据加载中...
 
   



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

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