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

零基础快乐学习C/C++——12

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

零基础快乐学习C/C++——12

结构体 结构体的声明
//struct--结构体关键字 Stu--结构体标签 struct Stu 结构体类型
//定义一个结构体类型,不创建空间,类似于图纸
struct Stu
{
	char name = [20];
	short age;
	char tele[12];
	char sex[5];
}s1,s2,s3;//s1,s2,s3是三个全局的结构体变量

int main()
{

	//创建结构体变量,这时才占用空间,类似于图纸澡出来的房子
	struct Stu s;//局部变量
}
typedef struct Stu
{
	char name = [20];
	short age;
	char tele[12];
	char sex[5];
}Stu;

注意上面两种的区别
第二种使用了tpyedef可以方便直接写Stu s1,而不用每次都写struct Stu s1

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

要知道是运用{}来完成结构体初始化的,如下面的例子

struct S
{
	int a;
	char c;
	char arr[20];
	double d;
};
struct T
{
	char ch[20];
	struct S s;
	char arr[20];
	char* pc;
};
int main()
{
	char arr[] = "hello,woldn";
	struct T t = {"hehe",{100,'w',"hello",3.14},arr};
	printf("%sn",t.ch);
	printf("%sn",t.s.arr);
	return 0;
}
结构体成员的访问
typedef struct Stu
{
	char name = [20];
	short age;
	char tele[12];
	char sex[5];
}Stu;

void print1(Stu tmp)
{
	printf("name:%sn",tmp.name);
	printf("name:%sn",tmp.age);	
	printf("name:%sn",tmp.tele);
	printf("name:%sn",tmp.sex);
}

void print2(Stu* ps)
{
	printf("name:%sn",ps->name);
	printf("name:%sn",ps->age);	
	printf("name:%sn",ps->tele);
	printf("name:%sn",ps->sex);
}

int main()
{
	Stu s = {"jack",40,"13132131","男"};
	print1(s);
	print2(&s);
	return 0;
}

用来打印结构体数据,哪个函数更好呢?
pirnt2,理由如下
print1函数 实参会开辟空间创建,同时传递给形参时,也会开辟空间,造成了空间浪费,而print2传参的时候传入的是地址,无非是4个字节活着8个字节(32位or64位)

两种访问方式

  1. 用.访问 结构体变量
  2. 用-> 结构体指针


函数穿参压栈是什么意思

每一次调用函数都会在栈上申请空间

注意穿参是从右往左传,所以先b‘,再a’

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847892.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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