总览
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
//其中Books是结构体标签,中间是变量,book是结构类型的变量,一般这三部分至少要出现2个
-1
//此结构体声明没有标签
struct
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
//初始化book.title等赋值取值即可,或者如下:
struct
{
int a;
char b;
double c;
} s1 = {1,'c',15.6};
0
//此结构体声明没有结构体变量
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
}
//使用Books标签另外声明变量b1,b2,b3
struct Books b1,b2,b3;
1
//利用typedef关键字,此时的book不再是结构体变量,而是一种结构体类型的名字,用它作为类型声明其它结构体变量
typedef struct
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
book b1,b2,b3;
附
当变量为结构体类型时,访问成员变量直接用成员访问运算符 ‘.’ ;
当变量为指向结构体的指针的时候,访问成员变量要使用符号 ->。
示例:
//示例中L为指向结构体SqList的指针L,一般用下面第二个方法访问成员变量,还可以用复杂点的第一个方法访问成员变量。
int initList_sq(SqList *L) {
//1
(*L).elem = (SeqType *) malloc(sizeof(SeqType) * LIST_INIT_SIZE);
if (!(*L).elem)
return 0; //内存分配失败,存储空间不够
(*L).length = 0; //表示顺序表为空
(*L).listsize = LIST_INIT_SIZE; //表示顺序表里,最大存储单元个数
printf("子函数:%d\n",(*L).listsize);
//2
L->elem = (SeqType *) malloc(sizeof(SeqType) * LIST_INIT_SIZE);
if (!L->elem)
return 0; //内存分配失败,存储空间不够
L->length = 0; //表示顺序表为空
L->listsize = LIST_INIT_SIZE; //表示顺序表里,最大存储单元个数
printf("子函数:%d\n",L->listsize);
return 1;
}