结构体

1、基本概念及使用

数组 :只能存同一种数据类型的数据
结构体:可以存各种不同类型的数据
结构体定义:用 struct 关键字
结构体变量定义:定义的时候要带上 struct 关键字
结构体成员的使用:1、变量使用 . 引用成员,指针使用 -> 引用成员

#include <stdio.h>
#include <string.h>


// 1、只定义结构体类型
struct Student1
{
	char ch;
	int id;
	char name[20];
};

// 2、定义结构体类型的同时定义几个变量
// s2, s3 是结构体变量
struct Student2
{
	int a;
	int b;
}s2, s3;

// 3、定义结构体的时候可以省略结构体名称
struct 
{
	int c;
	int d;
}s4 = {1,2}, s5 = {3,4};


int main()
{	
	// s 就是一个 Student1 类型的变量,s 内部有 ch、id、name 成员
	struct Student1 s;
	s.ch = 'A';
	s.id = 10;
	strcpy(s.name, "小明");  // 字符串拷贝,不能直接赋值
	
	// 结构体指针
	struct Student1 *ps = &s;
	printf ("ch = %c, id = %d, name = %s\n", ps->ch, ps->id, ps->name);
	
	s2.a = 10;
	s2.b = 20;
	
	s3.a = 40;
	s3.b = 50;
	
	// 结构体变量的初始化
		struct Student1 s = {'A', 10};
	
	printf ("ch = %c, id = %d, name = %s\n", s.ch, s.id, s.name);
	
	return 0;
}

2、结构体内存对齐规则

1、结构体成员变量所在地址必须能被该变量类型所占空间大小整除
2、结构体为成员变量分配空间,每次是按照最大类型的大小进行分配的
3、空间不够的时候再分配,够的时候不再分配
4、操作系统有默认对齐系数,对于现在的机器,大部分系数都是8,以前的系数是4。每次分配空间的大小大于 默认对齐系数,按照系统的来对齐,不大于,按照实际的来(取小值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值