结构变量和结构成员
【摘要】 结构变量
1. 结构变量
struct date today;
today.month=06;
today.day=19;
today.year=2005;
在内存中展示:
- 结构类型和结构变量是两件事情。
- 声明了结构类型后可以用这个结构类型定义很多结构变量
- 结构变量里会有结构类型里定义的那些元素
2. 结构变量初始化
- 如果不赋初始值,变量系统就是随机赋的值
- 用大括号赋初始值
#include <stdio.h>
struct date {
int month;
int day;
int year;
};
int main (int argc, char const *argv [] ) {
struct date today = {07, 31, 2022};
struct date thismonth = {.month = 7, .year = 2022} ;
printf ("Today's date is %i-%i-%i. \n",
today.year, today.month, today.day);
printf ("This month is %i-%i-%i. \n",
thismonth.year, thismonth.month, thismonth.day);
return 0;
}
分析:
- 按照第一行赋值的方法,07,31,2022分别赋值给month,day,year
- 也可以直接给具体的变量赋值。
- 没有赋值的那个变量的值系统赋值为0
- 这一点跟数组的赋值有点类似
3. 结构成员
- 结构和数组有点像
- 数组里有很多单元,结构里有很多成员
- 数组的单元是相同类型,结构的成员是不同类型
- 数组用 [] 运算符和下标访问其成员
- a [0] =10;
- 结构用 . 运算符和名字访问其成员
- today.day
- student.firstName
- pl.x
- pl.y
- 结构类型是虚的,结构变量是实体
- 结构类型只是告诉编译器所有这种结构类型的变量长得像这个样子,结构类型没有东西,结构类型点XX是没有意义的
- 出现在点 . 的一定时结构变量
4.结构运算
- 要访问整个结构,直接用结构变量的名字
- 对于整个结构,可以做赋值、取地址,也可以传递给函数参数
- p1= (struct point){5, 10};
- (struct point)表示强制类型转换
- 把5和10这两个值强制转换成point这种结构的变量,然后赋值给p1。
- 相当于p1.x=5;p1.y=10;
- 数组无法做这种运算,只有在初始化的时候才能做这种大括号的赋值。
- p1=p2;
- 相当于p1.x=p2.x;p1.y=p2.y;
- 数组无法做这种运算
- 数组变量是const,无法把一个数组变量赋值给另一个数组变量
- p1= (struct point){5, 10};
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)