C语言结构体初阶笔记(初始版)

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

结构体的创建
1
//struct Book
//{
//	char name[20];
//	int price;
//};

2
//struct Book
//{
//	char name[20];
//	int price;
//}; b3, b4, b5;//全局的结构体变量

3 重命名结构体
//typedef struct Book
//{
//	char name[20];
//	int price;
//} Book; //把结构体重命名为Book
//Book b3;
//Book b4;//结构体变量

用法示例 - 在数据结构中很常见
//typedef struct Node
//{
//	int data;
//	struct Node* next;
//}Node;//把结构体重命名为Node


//int main()
//{
//	struct Book b1;//创建局部结构体变量
//	struct Book b2;
//	Book b3;//用重命名后的结构体来创建变量
//	return 0;
//}


//struct Book
//{
//	char name[20];
//	int price;
//};
//
//typedef struct Book Book;//也可以先创建再重命名

//int b = 0;//全局变量
//
//int main()
//{
//	int a = 0;//局部变量
//	printf("%d\n", b);
//	return 0;
//}

//struct S
//{
//	char c;
//	char arr[10];
//	int* p;
//}s1, s2;
//
//struct S s3; //这两种都是定义结构体全局变量的方法
//
//struct B
//{
//	int a;
//	struct S s;//结构体成员也可以是另一个结构体成员
//	double d;
//}sb1, sb2;
//
//struct B sb3;
//
//int main()
//{
//	struct S s4 = { 'c', "zhangsan", NULL };//结构体的初始化
//	int a = 0;
//	struct B sb4 = { 100, {'q', "lisi", &a}, 3.14 };
//
//	return 0;
//}

结构体成员的访问
//struct Book
//{
//	char name[20];
//	int price;
//};

//void print(struct Book* p)
//{
//	printf("%s %d\n", p->name, p->price);
//}
//
//int main()
//{
//	struct Book b1 = { "鹏哥C语言", 66 };//默认初始化
//	struct Book b2 = { .price = 80, .name = "杭哥C++" };//指定初始化
//	//结构体变量.结构体成员
//	//printf("%s %d\n", b1.name, b1.price);
//	//printf("%s %d\n", b2.name, b2.price);
//	//结构体指针->结构体成员
//	struct Book* p = &b1;
//	//printf("%s %d\n", p->name, p->price);
//	//结构体的传参
//	print(&b1);
//	return 0;
//}


struct S
{
	int arr[100];
	int n;
};

//编译器需要再开辟一块很大空间给形参,会造成空间的浪费
void print1(struct S ss)
{
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		printf("%d ", ss.arr[i]);
	}
	printf("\n%d\n", ss.n);
}

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

void print2(struct S* p)
{
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		printf("%d ", p->arr[i]);
	}
	printf("\n%d\n", p->n);
}

int main()
{
	struct S s = { {1,2,3,4,5}, 100 };
	//print1(s);
	print2(&s);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值