c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言_哔哩哔哩_bilibili学习C语言学习C语言程序设计教程 c语言视频教程 谭浩强 c语言学习 谭浩强 谭浩强c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习C语言程序设计教程 c语言视频教程 c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习 C语言 c语言 C语言程序设计https://www.bilibili/video/BV1q54y1q79w?我的github主页

remeke (remeke) · GitHuba student. remeke has one repository available. Follow their code on GitHub.https://github/remeke今天学习了结构体的相关知识

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

#include<stdio.h>
//描述一个学生 
//名字,年龄,电话,性别 
struct stu//struct-结构体关键字 stu-结构体标签 struct stu-结构体类型  
{
	char name[20];
	short age;
	char tele[12];
	char sex; 
};//结构体声明是一个语句,最后的分号不可缺少 
int main()
{
	struct stu s;	    
	return 0;
}
#include<stdio.h>
typedef struct stu
{
	char name[20];
	short age ;
	char tele[12];
	char sex;
}stu;//将struct stu重新定义为stu 
int main()
{
	stu s;
	return 0;
}

 结构成员的类型

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

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

 嵌套结构体时的初始化

#include<stdio.h>
struct S
{
	int a;
	char c;
	char arr[20];
	double d;
};
struct T
{
	char ch[10];
	struct S s;
	char *pc;
};
int main()
{
char arr[]="hello,bit\n";
struct T t={"hello",{100,'w',"hello world",3.14},arr};
printf("%s\n",t.ch);
printf("%s\n",t.s.arr);
printf("%lf\n",t.s.d);
printf("%s\n",t.pc);
	return 0;
}

 结构体传参

#include<stdio.h>
typedef struct Stu
{
	char name[20];
	short age;
	char tele [12];
	char sex[5];
}Stu;
 void Print1(Stu tmp)
{
	printf("name:%s\n",tmp.name);
	printf("age:%d\n",tmp.age);
	printf("tele:%s\n",tmp.tele);
	printf("sex:%s\n",tmp.sex);
	
}
void Print2(Stu*ps)
{
    printf("name:%s\n",ps->name);
    printf("age:%d\n",ps->age);
	printf("tele:%s\n",ps->tele);
	printf("sex:%s\n",ps->sex);	
}
int main()
{
	Stu s={"李四",40,"12345678901","男"};
	Print1(s); 
	Print2(&s);
	//Print2函数更好Print1函数浪费空间 
	return 0;
}

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

结论:结构体传参的时候,要传结构体的地址。

更多推荐

C语言学习打卡2021.11.05