结构类型

举报
吴梦青 发表于 2022/06/16 16:57:39 2022/06/16
【摘要】 这节课学习了结构体的相关知识,学习了结构体的定义和使用方法,结构体是一种可以包含多个不同的数据类型的变量的一种数据类型,感觉是枚举的进阶版。

1. 结构:一个东西整合一堆不同数据类型的变量

结构:复合数据类型
声明结构类型

#include <stdio.h>

int main(int argc, char const *argv[]) {
	struct date {
		int month;
		int day;
		int year;
	};
	struct date today;
	today.month = 07;
	today.day = 31;
	today.year = 07;
	printf("Today's date is %i-%i-%i.\n",
	       today.year, today.month, today.day);
	return 0;
}

分析:

  • 结构体里有三个整型元素,每次结构体出现的时候,这三个元素都是一起出现的。
  • 注意结构体的大括号结束后有一个分号,初学者容易忘掉,这也是个易错点
    • 没写分号程序会报错

记得我当年c语言期末考试的时候,结构体的题因为胆怯,甚至都没有打开看一下,导致这个题没有做,没能做到精益求精,实在是非常遗憾。现在看到结构体的知识点和代码,似乎没有我想象的那么难

总结:

  • 和本地变量一样,在函数内部声明的结构类型只能在函数内部使用
  • 所以通常在函数外部声明结构类型,这样就可以被多个函数所使用了
    • 在函数外部声明后,以下的函数都可以调用这个结构体
#include <stdio.h>

struct date {
	int month;
	int day;
	int year;
};

int main(int argc, char const *argv[]) {

	struct date today;
	today.month = 07;
	today.day = 31;
	today.year = 07;
	printf("Today's date is %i-%i-%i.\n",
	       today.year, today.month, today.day);
	return 0;
}

2. 声明结构的形式

形式1

struct point {
    int x;
    int y;
};
struct point p1,p2;
  • p1和p2都是point里面
  • point有x和y的值
  • 上面的struct point p1,p2是定义了一个结构体类型的变量,变量名是p1和p2

形式2

struct {
    int x;
    int y;
}p1,p2;
  • p1和p2都是一种无名结构,里面有x和y,p1和p2都是变量,这个结构没有名字

形式3

struct point {
    int x;
    int y;
}p1,p2;
  • p1和p2都是point
  • 里面有x和y的值

小结

  • 对于第一和第三种形式,都声明了结构point。但是第二种形式没有声明point,只是定义了两个变量

3. 总结

这节课学习了结构体的相关知识,学习了结构体的定义和使用方法,结构体是一种可以包含多个不同的数据类型的变量的一种数据类型,感觉是枚举的进阶版。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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