结构变量和结构成员

举报
吴梦青 发表于 2022/06/17 22:45:45 2022/06/17
【摘要】 结构变量

1. 结构变量

struct date today;
today.month=06;
today.day=19;
today.year=2005;

在内存中展示:
20220616-164249.jpg

  • 结构类型和结构变量是两件事情。
  • 声明了结构类型后可以用这个结构类型定义很多结构变量
  • 结构变量里会有结构类型里定义的那些元素

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,无法把一个数组变量赋值给另一个数组变量
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。