| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5427 人关注过本帖
标题:在C和C++中struct和typedef struct的区别
只看楼主 加入收藏
GameCi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-8-15
收藏
 问题点数:0 回复次数:20 
在C和C++中struct和typedef struct的区别

我是一个C语言新手,在编程中对Struct的使用始终很犯晕,后来在一个国外的网站上找到一篇比较详细的介绍,觉得对自己帮助很大,在这里把他翻译出来和大家共享(也加上自己的一点体会),希望对大家有所帮助。

CC++有三种定义结构的方法。

typedef struct {

int data;

int text;

} S1;

// 这种方法可以在c或者c++中定义一个S1结构

struct S2 {

int data;

int text;

};

// 这种定义方式只能在C++中使用,而如果用在C中,那么编译器会报错

struct {

int data;

int text;

} S3;

这种方法并没有定义一个结构,而是定义了一个s3的结构变量,编译器会为s3内存。

void main()

{

S1 mine1; // OK , S1 是一个类型

S2 mine2; // OK, S2 是一个类型

S3 mine3; // OK, S3 不是一个类型

S1.data = 5; // ERROR S1 是一个类型

S2.data = 5; // ERROR S2 是一个类型

S3.data = 5; // OK S3是一个变量

}

另外,对与在结构中定义结构本身的变量也有几种写法

struct S6 {

S6* ptr;

};

// 这种写法只能在C++中使用

typedef struct {

S7* ptr;

} S7;

// 这是一种在C和C++中都是错误的定义

如果在C中,我们可以使用这样一个“曲线救国的方法“

typedef struct tagS8{

tagS8 * ptr;

} S8;

搜索更多相关主题的帖子: struct typedef 
2005-08-15 12:18
指向指针的指针
Rank: 1
等 级:新手上路
帖 子:339
专家分:0
注 册:2004-8-8
收藏
得分:0 
注解是加在例子前面还是加在后面的啊?

[此贴子已经被作者于2005-8-15 18:02:26编辑过]



/sign.png" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www./sign.png');}" onmousewheel="return imgzoom(this);" alt="" />
2005-08-15 17:58
swiminfire
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-8-11
收藏
得分:0 
不错!
注解是加在后面的

Get in first, and then word your ways out ! BY KIKI
2005-08-15 18:45
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 
呵呵,基础啊,鼓励更多的人有这种学习精神。。。楼主辛苦了。。

我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-08-15 22:46
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
谢谢,茅塞顿开!
醍醐灌顶呀!!!

差点把你忘了...
2005-08-16 10:38
zhangziqiu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-12-26
收藏
得分:0 
看样子只是使用上不同,实现的功能都是一样的

然后变量放前面就是结构(类型)
放后面就是变量

没错把?

2005-12-27 09:50
shen2006
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-4-20
收藏
得分:0 
学习学习
~~~~~~~~~~~~谢谢了

2006-05-04 17:26
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
其实在谭浩强书上都有,见11.2节与11.10节。
可恼崇洋思想,好像外语学得特棒,好像中国学者不会写C语法书似的。悲哀。在下我一本原著未读,但编的程序还差强人意吧?

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-04 19:12
jiajia5714
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-4-27
收藏
得分:0 

Pretty good!

2006-05-17 10:18
TCL
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-3-28
收藏
得分:0 
好啊

我要为C语言努力!!!谁都不能挡我!!挡我者。。看你怎样活·····
2006-05-17 17:28
快速回复:在C和C++中struct和typedef struct的区别
数据加载中...
 
   



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

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