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

初阶C语言结构体【基础的结构体知识】

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

初阶C语言结构体【基础的结构体知识】

文章目录

前言结构体的声明

结构体的声明

结构体的声明示例 结构体的定义和初始化结构体成员的访问结构体传参

前言

我们都知道C语言中有很多的数据类型,在使用的时候我们可以根据需要定义不同的数据类型。但是在实际生活中往往会遇到复杂的事物,这时候一个数据类型就不足以描述这个事物,所以就有结构来描述这些复杂的事物。所以结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。


结构体的声明 结构体的声明
struct tag			//tag 表示结构名
{
 	member-list;    //成员列表
 }
 variable-list; 	//变量列表

其中tag是结构名,struct tag 是类型名,在别处声明一个struct tag类型的变量时,注意不可以将struct省略,member-list是成员列表,可以有多个不同类型的变量,比如,标量(算术类型和指针类型)、数组,甚至可以是其他结构体。

结构体的声明示例
struct Stu
{
 	char name[20];	//名字
	 int age;		//年龄
	 char sex[5];	//性别
	 char id[20];	//学号
}Stu;				//分号不能丢

如果觉得struct Stu这个类型名写得太麻烦,也可以使用typedefine关键字将这个类型名简化一下

struct Stu
{
 	char name[20];	//名字
	 int age;		//年龄
	 char sex[5];	//性别
	 char id[20];	//学号
}Stu;	//这时的Stu表示是类型名
Stu s1;

结构体的定义和初始化

结构体在初始化的时候可以类比一下数组,数组在定义的时候是用大括号 { } 括起来,结构体也是一样的。当结构体里面包含了一个结构体时,需要再使用一个大括号将被包含的数据括起来。

struct Point
{
	 int x;
	 int y;
 }p1; 				//声明类型的同时定义变量p1
struct Point p2; 	//定义结构体变量p2

//初始化:定义变量的同时赋初值。

struct Point p3 = {x, y};
struct Stu        //类型声明
{
	 char name[15];//名字
	 int age;      //年龄
};
struct Stu s = {"zhangsan", 20};//初始化
struct Node
{
	 int data;
	 struct Point p;
	 struct Node* next; 
}n1 = {10, {4,5}, NULL}; //结构体嵌套初始化
struct Node n2 = {20, {5, 6}, NULL};//结构体嵌套初始化

字符串使用 “ ” , 字符使用 ’ ’ 。

结构体成员的访问

访问结构体的时候需要使用到结构体成员访问操作符:

如果是结构体变量,使用 结构体.结构体成员如果是结构体指针,使用结构体->结构体成员


结构体传参

函数传参的时候,我们都知道,如果将实参传过去的话是要将实参的内容全部拷贝一份,如果是结构体作为函数的参数的话,就会造成很大的空间浪费,所我们在进行结构体的传参的时候需要传结构体的地址,从而通过地址来访问结构体的成员,而不是将整个结构体传过去。

struct S {
 int data[1000];
 int num;
};
struct S s = {{1,2,3,4}, 1000};
//结构体传参
void print1(struct S s) {
 printf("%dn", s.num);
}
//结构体地址传参
void print2(struct S* ps) {
 printf("%dn", ps->num);
}
int main()
{
 print1(s);  //传结构体
 print2(&s); //传地址【首选】
 return 0; }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783756.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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