C语言结构体的应用

C语言结构体的应用,第1张

目录

1.结构体类型的声明

2.结构体初始化

3.结构体成员访问

4.结构体传参


1.结构体类型的声明

//创建一个结构体类型S

struct S
{
    char c;
    int i;
    double d;
};

//创建一个类型Stu,相当于int

 //struct结构体关键字
struct Stu
{  
    
    //结构体成员可以是数组,指针,标量甚至其他结构体如:
    struct S ss;//struct s 是定义的其他结构体
    
    //成员变量
    char name[20];//名字
    int age[20];//年龄
    char id[20];


}s1,s2;//s1和s2也是结构体变量
//但是s1和s2是全局变量,在main()函数中创建的s是局部变量


2.结构体初始化

注:用的上面的结构体   

    struct Stu s = { {'w',20,3.14},"张三",30,"2022",};
    //用Stu类型创建一个对象s,相当于int s,区别类型和对象
    //因为结构体中嵌套了结构体,初始化的时候也需要嵌套


3.结构体成员访问

结构体成员访问需要学习 *** 作符“.”和“->”如果不了解请先前往学习对应的 *** 作符,C语言 *** 作符详解

#define _CRT_SECURE_NO_WARNINGS 1
#include 

struct S
{
	char c;
	int i;
	double d;
};


//创建一个类型Stu,相当于int
struct Stu  //struct结构体关键字
{  
	
	//结构体成员可以是数组,指针,标量甚至其他结构体如:
	struct S ss;//struct s 是定义的其他结构体
	
	//成员变量
	char name[20];//名字
	int age[20];//年龄
	char id[20];


}s1,s2;//s1和s2也是结构体变量
//但是s1和s2是全局变量,在main()函数中创建的s是局部变量

int main()
{
	struct Stu s = { {'w',20,3.14},"张三",30,"2022",};
	//用Stu类型创建一个对象s,相当于int s,区别类型和对象
	//因为结构体中嵌套了结构体,初始化的时候也需要嵌套

	printf("s.ss.c=%c\n",s.ss.c);//访问也是嵌套访问

	//用指针访问
	struct Stu* p = &s;//定义该结构体类型指针
	printf("(*p).ss.c=%c\n",(*p).ss.c);
	printf("p->ss.c=%c\n", p->ss.c);
	
	return 0;
}

4.结构体传参

结构体传参实例:

写一个函数用于读出结构体对象的所以成员变量

注:写出函数后需要将结构体的信息传到函数中,函数传参又包括传值调用和传值调用,如果对函数不太了解不知道什么是函数,函数如何调用,什么是传值调用,什么是传址调用可以去查看学习一下,有实例帮助理解。


C语言函数是什么?函数全方位介绍

#define _CRT_SECURE_NO_WARNINGS 1
#include 

struct S
{
	char c;
	int i;
	double d;
};


//创建一个类型Stu,相当于int
struct Stu  //struct结构体关键字
{  
	
	//结构体成员可以是数组,指针,标量甚至其他结构体如:
	struct S ss;//struct s 是定义的其他结构体
	
	//成员变量
	char name[20];//名字
	int age;//年龄
	char id[20];


}s1,s2;//s1和s2也是结构体变量
//但是s1和s2是全局变量,在main()函数中创建的s是局部变量


//写一个函数print()用于输出结构体成员
void print1(struct Stu t)
{
	printf("%c\n", t.ss.c);
	printf("%d\n", t.ss.i);
	printf("%lf\n", t.ss.d);
	printf("%s\n", t.name);
	printf("%d\n", t.age);
	printf("%s\n", t.id);

}
void print2(struct Stu *p)
{
	printf("%c\n",p->ss.c);
	printf("%d\n",p->ss.i);
	printf("%lf\n",p->ss.d);
	printf("%s\n",p->name);
	printf("%d\n",p->age);
	printf("%s\n",p->id);
}
//print1()函数是:函数传值调用
//print2()函数是:函数传址调用
//这里当然print2()的方式要比print1()更好
//好处:我们可以修改数据,并且在调用函数时不需要开辟新的内存


int main()
{
	struct Stu s = { {'w',20,3.14},"张三",30,"2022",};
	print1(s);
	print2(&s);
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/565181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-06
下一篇 2022-04-06

发表评论

登录后才能评论

评论列表(0条)

保存