设计程序时,最重要的步骤之一是选择表示数据的方法。在许多情况下,简单变量甚至数组还不够。为此,c提供了结构变量提高表示数据的能力。
结构声明
结构声明:描述了一个结构的组织布局,如下
struct book{
char title[10];
char author[10];
float value;
}
该声明未创建实际的数据实体,仅仅只是描述了数据应该是如何组成的,可以把他想象一个模板,他是告诉你结构体是如何存储数据的。
定义结构变量
刚才说的是结构声明,是告诉编译器如何表示数据,但是他并未让编译器为数据分配内存空间,我们现在就可以根据我们之前声明的结构体声明我们的结构,如下
struct book library;
编译器执行这行代码,便创建了一个结构变量,变量名是libary,编译器使用之前我们声明的结构体book为模板为该变量分配空间,当然我们定义结构变量的时候,可以通过book模板创建多个结构体变量,从本质上看,book结构声明创建了一个名为struct book
的新数据类型。
当然,结构体的声明和结构变量的声明可以写在一块,如下
strcut book{
char title[10];
char author[10];
float value;
}library;
初始化结构变量
如下
struct book library ={
"MY BOOK",
"MIKASA"
1000.12
};
访问结构成员
什么是结构成员,结构成员就是我们声明结构体的时候中括号内每一个变量,我们称为结构体的成员或者叫属性,如果我现在已经向上面一样初始化了结构变量,那如何获取或者修改其值呢?
如下程序
#include <stdio.h>
struct book{
char title[10];
char author[10];
float value;
};
int main(int argc, char const *argv[])
{
struct book library ={
"MY BOOK",
"MIKASA",
1000.12
};
printf("%s\n",library.title);
library.value = 999.99;
printf("%.2f\n",library.value);
return 0;
}
嵌套结构
就是结构中的属性可以是另一个结构,此部分不做赘述。
指向结构的指针
声明和初始化结构指针,以及使用指针访问成员
如下程序
#include <stdio.h>
struct book{
char title[10];
char author[10];
float value;
};
int main(int argc, char const *argv[])
{
struct book library ={
"MY BOOK",
"MIKASA",
1000.12
};
struct book * pbook = &library;
printf("%p\n",&library);
printf("%p\n",pbook);
printf("%s\n",(*pbook).title);
printf("%s\n",pbook->author);
return 0;
}
image.png
网友评论