结构体(C语言)-创新互联

自定义类型-结构体

假设我们要存储一个学生的身份信息,包括学号,姓名 ... 等 此时我们可以自己定义一种类型,来封装这些信息,那么此时我们就可以运用到结构体

站在用户的角度思考问题,与客户深入沟通,找到宾川网站设计与宾川网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖宾川地区。
结构体类型

结构体是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量

结构的成员可以是变量、数组、指针、也可以是其它结构体!

在C语言中用 stucrt 来定义结构体类型 

#include// 定义结构体类型
struct STU{
 int avg;
 char name[10];
 float hight;
 double wight;
};

int main()
{


    return 0;
}
结构体变量的定义和初始化

我们知道 整型类型 定义变量: int a=0;

 浮点型 定义变量:float b=0.0;

 指针变量 :int* p=NULL;

以此类推结构体也是一种类型,它也可以定义变量,变量可以初始化!

具体看代码:

#include//创建结构体类型
struct STU {
	char name[10];
	int age;
	float hight;
	double wight;
}S1 = { "李真人",289,1.78f,186 }; 
// 直接在创建类型的时候创建结构体变量 S1,并初始化;

struct STU S2 = { "万孔林",18,1.60f,125 };//定义结构体全局变量 S2;

int main()
{
	struct STU S3 = { "悬手低涂",988,1.88f,149 };//定义结构体局部变量S3并初始化!
	struct STU * p = NULL;  //结构体指针的定义
	p = &S1;  // 让结构体指针指向结构体变量S1	

   return 0;
}
结构体成员的访问

结构体变量的访问有两种访问方式

第一种是 . 操作符访问:结构体变量.成员变量名

第二种是 ->操作符访问:指针的访问形式:指针->成员变量 

#include//定义结构体类型
struct STU {
	char name[10];
	int age;
	float hight;
	double wight;
};

int main()
{
	//定义结构体变量
	struct STU S = { "雷古",58,1.78f,145 };

	//用 点 . 操作符访问成员
	printf("%s %d %f %lf\n", S.name, S.age, S.hight, S.wight);

	// 定义结构体指针
	struct STU * p = &S;

	//用 ->操作符访问成员
	printf("%s %d %f %lf\n", p->name, p->age, p->hight, p->wight);

	//以指针解引用的方式访问成员
	printf("%s %d %f %lf\n", (*p).name, (*p).age, (*p).hight, (*p).wight);

	return 0;
}
结构体传参

结构体在函数传参的时候,有两种方式:

1、传值:直接传结构体

2、传地址:传结构体指针

结构体在传参的时候建议传结构体的地址

原因:

函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的 下降。
#includestruct stu {
	char namr[10];
	int age;
	float hight;
	double wight;
};

void Prin(struct stu s)
{
	// 结构体变量 . 成员变量 访问
	printf("%s %d %f %lf\n", s.namr, s.age, s.hight, s.wight);
}

void dayin(struct stu* p)
{
	// 指针->成员变量访问 
	printf("%s %d %f %lf\n", p->namr, p->age, p->hight, p->wight);

	// 指针解引用 . 成员变量访问
	printf("%s %d %f %lf\n", (*p).namr, (*p).age, (*p).hight, (*p).wight);
}

int main()
{
	struct stu s = { "大帝蟒",28,1.79f,189 };
	struct stu* p = &s;

	Prin(s);//传值,传结构体
	dayin(p);// 传址,传结构体指针
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前题目:结构体(C语言)-创新互联
URL标题:http://azwzsj.com/article/dpjdie.html