当前位置: 代码迷 >> C语言 >> 在C和C++中struct和typedef struct的区别
  详细解决方案

在C和C++中struct和typedef struct的区别

热度:488   发布时间:2005-08-15 12:18:00.0
在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-8-15 18:02:26编辑过]



----------------解决方案--------------------------------------------------------
不错!
注解是加在后面的
----------------解决方案--------------------------------------------------------
呵呵,基础啊,鼓励更多的人有这种学习精神。。。楼主辛苦了。。
----------------解决方案--------------------------------------------------------
谢谢,茅塞顿开!
醍醐灌顶呀!!!
----------------解决方案--------------------------------------------------------
看样子只是使用上不同,实现的功能都是一样的

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

没错把?
----------------解决方案--------------------------------------------------------
学习学习
~~~~~~~~~~~~谢谢了
----------------解决方案--------------------------------------------------------
其实在谭浩强书上都有,见11.2节与11.10节。
可恼崇洋思想,好像外语学得特棒,好像中国学者不会写C语法书似的。悲哀。在下我一本原著未读,但编的程序还差强人意吧?
----------------解决方案--------------------------------------------------------

Pretty good!


----------------解决方案--------------------------------------------------------
好啊
----------------解决方案--------------------------------------------------------
  相关解决方案