栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

浅谈结构体

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅谈结构体

一 c语言的结构体

在c语言中,可以使用结构体(struct)来存放一组不同类型的数据。结构体指的是一种数据结构,是c语言中聚合数据类型(aggregate datatype)的一类。结构体可以被声明为变量、指针或者数组等,用来实现复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(number),且这些成员可以为不同的类型,成员一般用名字访问。

定义结构一的一般形式为:

struct 结构体名{
	成员列表
};

在成员表列中可以是几种基本数据类型,也可以是结构体类型。

struct类型名{}变量;后面的分号不能漏掉

例如用结构体来表示学生信息:

struct stu{
	char*name;                           //姓名
	int num;                             //学号
	char sex;                            //性别
	float score;                         //成绩
};
二 结构体变量

结构体也是一种数据结构类型,可以用来说明变量。例如:

struct stu stu1, stu2;

定义了两个变量stu1 和stu2,他们都是stu类型,都有4个成员组成。关键字struct不能少。结构体的各个

成员在内存中是连续存储的。stu1、stu2的内存如下图所示:

也可以在定义结构体的时候同时定义结构变量:

struct stu{
	char *name;//姓名
	int num;//学号
	char sex;//性别
	float score;//成绩
}stu1,stu2;

如果只需要stu1,stu2两个变量,也可以不写结构体名字:

struct{
	char *name;
	int num;
	char sex;
	float score;
}stu1,stu2;

这样做虽然书写简单,但是因为没有结构体名字,后面就没办法用该结构体定义新的变量。

但是可以使用宏定义,使用一个符号常量来表示一个结构类型,例如:

#define STU struct stu

STU{
	char *name;
	int num;
	char sex;
	float score;
};
STU stu1,stu2;

后面我们会学习windows编程,大部分结构体都是这样定义的。

typed和#define用法不同,甚至可以结合起来灵活使用,使用时一定要注意两者的不同之处。

三 成员的获取和赋值

在c语言中,使用点号.来获取结构体中的一个成员,一般结构是:

结构变量名。成员名

例如:

stu1.name ="Jake";
stu2.score = 99.9;

除了可以对成员进行注意赋值,也可以像数组一样整体赋值,例如:

struct stu{
	char *name; //姓名
	int num;//学号
	char sex;//性别
	float score;//成绩
} stu1,stu2 = { "Jake", 10, 'M', 90 };

不过整体赋值仅限于上面这样的情况,也就是定义结构体的同时声明变量。下面的写法就是错误的:

stu2 = {"Joke", 10, 'M', 90 };
//一个完整的示例:
#include
#define STU struct stu

int main(){
	STU{
		char *name;
		int num;
		char sex;
		float score;
	};
	STU stu1;
	stu1.name = "Cheng Zi";
	stu1.num = 1;
	stu1.sex ='M';
	stu1.score = 99;
	printf("Hello everyone! My name is %s, a naughty boy, but with good scores(%.2f) and top No.(%d)!",stu1.name, stu1.score, stu1.num);
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号