概述
结构体基础知识小结
文章目录
- 结构体基础知识小结
- 结构体概念
- 定义结构体变量
- 定义结构体数组
- 定义结构体指针
- 访问结构体成员
- 访问结构体数组成员
- 访问结构体指针成员
- 结构体的初始化
- 嵌套结构
一些对结构体基础知识的总结,可能对小白比较友好,有歧义处还请指正,
结构体概念
首先,让我们来看一下结构体的基础概念:
结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员”
,其描述了一块内存区间的大小及解释意义。
定义结构体变量
结构体的样子如下:
struct book{
char title[20];
char author[20];
double value;
};
struct book library;
//和下面的形式相同
struct book{
char title[20];
char author[20];
double value;
}library;
在上面那段代码中,struct是关键字,表明跟在后面的是结构体,book是结构体的标记(可以看作是该结构体的名字),便于在main函数里引用
struct book library;//在main函数里的声明 注意!声明写在main函数里
我们创建了一个结构变量library,该变量的结构布局是book(就是和book结构体长得一样!)。
在book结构体内部,我们可以定义各种类型的变量,如int,double,char,甚至可以嵌套一个结构体(后面详细介绍)。
无论是在main函数里声明library,还是直接在花括号后面声明效果一样!
定义结构体数组
struct book read[10];
上面的代码块中定义了一个结构体数组,表明read是一个含有十个元素的数组,数组的每个元素都是book结构布局的结构体。
定义结构体指针
struct book *p;
该声明并未创建一个新的结构,但是指针p现在可以指向任意现有的book类型的结构。
例如,如果library是一个book类型的结构,可以这么写:
p=&library;
访问结构体成员
library.value;
以上方法均可以访问结构体成员,library.value表示访问library中的value部分。
访问结构体数组成员
read[0].value//正确
read.value[0]//错误
结构体数组的访问要带下标,上面表示访问read数组第0个元素的value变量。
访问结构体指针成员
p->value==library.value
(*p).value==library.value
p是一个指针,p->value是该指针所指向结构的一个成员。
结构体的初始化
//一一对应
struct book library={"阿哈算法","阿哈磊",45.00};
//中间用逗号隔开,字符和字符串有双引号
//末尾分号
//任意顺序
struct book library={
.value=45.00,
.author="阿哈磊",
.title="阿哈算法"
};
//指定
struct book library={.value=45.00};
//只有value被赋值
//输入型
scanf("%s %s %lf",library.title,library.author,&library.value);
//字符类无需&
//数组类
int i,n;
for(i=0;i<n;i++){
scanf("%s %s %lf",library[i].title,library[i].author,&library[i].valu);
}
//与数组类似
//指针赋值
struct book *p;
p=&library;
scanf("%s %s %lf",p->title,p->author,p->value);
嵌套结构
struct book{ //第一个结构
char title[20];
char author[20];
double value;
};
struct student{ //第二个结构
struct book library; //嵌套结构
int bir;
char name[40];
};
提到嵌套结构,就不得不提到内存对齐问题,详见另一篇博客https://blog.csdn.net/weixin_57133901/article/details/124291243
未完待续!!!
撒花????!!!
最后
以上就是优秀发箍为你收集整理的结构体基础知识小结结构体基础知识小结的全部内容,希望文章能够帮你解决结构体基础知识小结结构体基础知识小结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复