您的位置:首页 > 其它

结构体(有数组和指针)

2013-08-24 00:26 162 查看
#include <iostream>

#include <stddef.h>

using namespace std;

struct 

{
int     a;
char    b;
float   c;

} x;//创建了一个变量x,包含三个成员

/******************************************************************************************************

**这个和上面的是不同类型,不能写z = & x;

*/

struct 

{
int    a;
char   b;
float  c;

} y[20], *z;//这个声明创建了y和z。y是一个数组,包含了20个结构体。z是一个指针,指向这个类型的结构体

struct SIMPLE

{
int    a;
char   b;
float  c;

};

struct SIMPLE x;

struct SIMPLE y[20],*z;

//这时x,y,z是同一种类型的结构变量

//**********************************************************************************************************

/*********************************************************************************************************

**使用typedef的与上面的等价

*/

typedef struct

{
int    a;
char   b;
float  c;

} Simple;//现在Simple是一个类型

Simple x;

Simple y[20], *z;

/************************************************************************************************************

**复杂的结构成员

*/

struct COMPLEX

{
float   f;
int     a[20];
long    *lp;
struct SIMPLE  s;
struct SIMPLE  sa[10];
struct SIMPLE  *sp;

};

struct COMPLEX comp;

/*

**1.名字a是一个数组,表达式comp.a就选择了这个成员,这个表达式的结果是个数组名,所以可以把它用在任何可以使用

** 数组名的地方。这样便可把指针和数组等更复杂的知识用在里面

**2.类似的,成员s是个结构,所以表达式comp.s的结果是个结构的变量名,可以用在任何可以使用普通结构变量的地方。可

** 以把这个表达式用作另一个点操作符的左操作符,如comp.a.s

**3.成员sa是一个结构数组,所以comp.sa是一个数组名,它的值是一个指针常量。对这个表达式使用下标引用操作,如(comp.sa)[4]

**将选择一个数组元素,但这个元素本身是一个结构体,所以可以使用另外一个点操作符取得它的成员之一:comp.sa[4].c

**********************************************************************************************************************/

/*******************************************************************************************************************

**定义一个结构标签struct LNode来声明next

陷阱:

typedef struct

{
int data;
LNode *next;//有错误

}LNode;

*/

typedef struct lNode

{
int data;
struct lNode *next;

}LNode,*LinkList;

/*

**该结构体中的typedef只是声明LNode是个结构体类型,与解决结构体的自引用问题无关,结构体的自引用是通过标签struct LNode

**来声明next的

***********************************************************************************************************************/

int main ()

{
cout<< offsetof(struct SIMPLE,a)<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: