我是一个C语言新手,在编程中对Struct的使用始终很犯晕,后来在一个国外的网站上找到一篇比较详细的介绍,觉得对自己帮助很大,在这里把他翻译出来和大家共享(也加上自己的一点体会),希望对大家有所帮助。
在C和C++有三种定义结构的方法。
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;
----------------解决方案--------------------------------------------------------
注解是加在例子前面还是加在后面的啊?
[此贴子已经被作者于2005-8-15 18:02:26编辑过]
----------------解决方案--------------------------------------------------------
不错!
注解是加在后面的
----------------解决方案--------------------------------------------------------
呵呵,基础啊,鼓励更多的人有这种学习精神。。。楼主辛苦了。。
----------------解决方案--------------------------------------------------------
谢谢,茅塞顿开!
醍醐灌顶呀!!!
----------------解决方案--------------------------------------------------------
看样子只是使用上不同,实现的功能都是一样的
然后变量放前面就是结构(类型)
放后面就是变量
没错把?
----------------解决方案--------------------------------------------------------
学习学习
~~~~~~~~~~~~谢谢了
----------------解决方案--------------------------------------------------------
其实在谭浩强书上都有,见11.2节与11.10节。
可恼崇洋思想,好像外语学得特棒,好像中国学者不会写C语法书似的。悲哀。在下我一本原著未读,但编的程序还差强人意吧?
----------------解决方案--------------------------------------------------------
Pretty good!
----------------解决方案--------------------------------------------------------
好啊
----------------解决方案--------------------------------------------------------