struct
用法
struct tag {
member-list
member-list
member-list
...
} variable-list ;
实例
struct Books
{
int book_id;
char *bookname;
}
说明:
(1)上面声明了一个结构的“变量类型”,我们可以通过上面去实例化一些变量
如下:
int main(){
struct Books a;
a.book_id = 1;
a.bookname = "Old Man and Sea";
printf(a.bookname);
return 0;
}
(2) 可以在建立struct 的时候,就实例化一些变量对象
struct Books
{
int book_id;
char *bookname;
}booka,bookb,*bookc;
int main(){
struct Books a;
a.book_id = 1;
a.bookname = "Old Man and Sea";
booka.bookname = "hello world";
booka.bookname = 2;
bookb.bookname = "price and prejudce";
bookb.bookname = 3;
(*bookc).bookname = "test pointer";
(*bookc).book_id = 4;
printf(a.bookname);
return 0;
}
typedef
定义与用法
作用是用来取别名使用的
typedef unsigned char BYTE;
此时后面都可以使用BYTE 来代替 unsigned char 进行直接定义别的变量了
typedef 与 struct
单链表的定义
typedef struct Node
{
int data;
struct Node* pNext;
} NODE,*pNODE;
说明:
(1) 下面的代码 表示一个声明了一个结构体
struct Node
{
int data;
struct Node* pNext;
}
(2) typedef 表示将这个东西另外起一个名字叫做NODE
(3) *pNODE 表示 起了一个别名,叫做pNode ,那么就表示pNODE 定义的变量就是指针类型的
(4) 结构体内部,定义了一个变量和一个指向自己的指针
链表创建的几个点:
pNode a; (创建一个指向节点的指针)
NODE a; (创建 一个真实的节点)
pNODE *L; (创建一个指向节点的指针的指针)
pNODE *L; // 声明的是一个指向地址(是指向节点的地址)的地址 头指针
//NODE a; // 声明的是一个实体的对象
pNODE a,b; // 声明的是一个地址
b = (pNODE)malloc(sizeof(NODE));
a = (pNODE)malloc(sizeof(NODE));
b->data = 11;
b->pNext = NULL;
a->data = 10;
a->pNext = b;
L = &a;
printf("anssss:%d\r\n", (*L)->data);
printf("anssss:%d\r\n", a->data);
printf("anssss:%d\r\n", a->pNext->data);
printf("anssss:%d\r\n", b->data);