一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。
typedef int size_i;
则此时size_i就是int的别名。typedef并不创建新的类型。仅为现有类型添加一个同义字。可以在需要int的上下文中使用size_i.
1.2: typedef与struct结合使用:
typedef struct tagMyStruct
{
int iNum;
long lSize;
} MyStruct, *pMyStruct;
这段代码完成由两个操作组成:
动作一:
struct tagMyStruct
{
int iNum;
long lSize;
};
定义了一个新的结构体类型。
tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。
用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct
varName来定义变量是不对的,struct 和tagMyStruct合在一起才能表示一个结构类型。
动作二:
使用typedef为这个结构体起了个新别名。
typedef struct tagMyStruct MyStruct;
typedef struct tagMyStruct *pMyStruct;
因为MyStruct 是struct tagMyStruct的别名。 可以直接使用MyStruct来定义变量。
如: MyStruct
varName;
C语言允许在结构中包含指向它自己的指针,但上述代码的根本问题在于typedef的应用。代码分两个过程:结构体的定义,结构体的新命名
通过指向结构体变量的指针引用结构体变量中的成员
下面通过一个简单例子来说明指向结构体变量的指针变量的应用。【例7.3】指向结构体变量的指针的应用。
- #include <iostream>