(c语言)初识结构体

目录

1. 结构体的声明

1.1 结构的基础知识

1.2 结构的声明 

1.3 结构成员的类型 

1.4 结构体变量的定义和初始化 

2. 结构体成员的访问与传参 


1. 结构体的声明

1.1 结构的基础知识

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

例如常见的:int char,long..... 

1.2 结构的声明 

struct tag
{
member-list;
}variable-list; 

举两个例子

typedef struct Stu
{
      char name[20];//名字
      int age;//年龄
      char sex[5];//性别
      char id[20];//学号
}Stu;//记住分号不能丢

结构体类型的声明
//struct Stu
//{
//    char name[20];//名字
//    int age;//年龄
//    char sex[8];//性别
//    float score;
//}s1,s2,s3;
s1,s2,s3是通过struct Stu类型创建的变量
s1,s2,s3是全局变量

1.3 结构成员的类型 

结构的成员可以是标量、数组、指针,甚至是其他结构体。 

1.4 结构体变量的定义和初始化 

edef 类型重定义/重命名,也就是取别名

//结构体类型的声明
//typedef struct Stu
//{
//    char name[20];//名字
//    int age;//年龄
//    char sex[8];//性别
//    float score;
// }Stu;
//
//int main()
//{
//    //s4,s5是局部变量
//    //struct Stu 才是结构体类型,不能随便省略struct
//
//    struct Stu s4;
//    struct Stu s5;
//    Stu s6;
//
//    return 0;
//}
// 

2. 结构体成员的访问与传参 

//.      结构体变量.结构体成员
//->     结构体指针->结构体成员 

struct Point
{
	int x;
	int y;
}p1 = {10, 15};

struct S
{
	char c;
	struct Point sp;
	double d;
	char arr[20];
};

void print1(struct S s)
{
	printf("%c\n", s.c);
	printf("%d %d\n", s.sp.x, s.sp.y);
	printf("%lf\n", s.d);
	printf("%s\n", s.arr);
}
void print2(struct S* ps)
{
	printf("%c\n", ps->c);
	printf("%d %d\n", ps->sp.x, ps->sp.y);
	printf("%lf\n", ps->d);
	printf("%s\n", ps->arr);
}
int main()
{
	struct Point p = {100, 200};
	struct S ss = { 'w', {100,20}, 5.5, "hello"};
	//ss.c = 'b';
	//ss.sp.x = 1000;
	//ss.sp.y= 2000;
	//ss.d = 3.14;
	//strcpy(ss.arr, "world");//strcpy字符串拷贝
	print1(ss);//打印struct S类型的变量
	print2(&ss);//

	return 0;
}

函数传参的时候,参数是需要压栈的。(这部分内容我会在后续文章中讲到)。

如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。

猜你喜欢

转载自blog.csdn.net/m0_63562631/article/details/126164422