黑马程序员 C语言基础:结构体

本文详细介绍了结构体的概念、声明与赋值方法,以及内存对齐原则,并提供了多种结构体定义方式的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——

构造类型:由基本数据类型组成 (int、float、double、char)

数组 :只能用多个相同类型的数据结构构成
结构体 :可以有多个不同类型的数据构成

声明、

// 1.第一结构体类型
struct Person
{
     int age;        // 年龄
     double height; // 身高
     char *name;   // 姓名
};
// 2.根据结构体类型,定义结构体变量
struct Person p = {21, 1.80, "sun"};   // 这种赋值方法只能用在初始化的时候!

赋值、

p.age = 30;                   // 一般赋值方法

struct Person *pp = &p;     // 结构体指针的赋值方法
pp->age = 20;

struct Person p = {.name="sun", .height=1.80, .age=21};  // 这样的赋值方法也非常方便,可以打乱顺序赋值

struct Person d2 = {23,1.70,"bo"};

d2 = p;      // 同类型的结构体可以直接赋值 ,
            // 这样一来结构体内的三个值都会被改变了

内存分析、

// 1定义结构体类型(并不会分配存储空间
struct Date
{ 
     int year;
     int month;
     int day;
};
// 2.定义结构体变量(真正分配存储空间
struct Date d1 = {2015, 3, 5};

毫无疑问,分配给d1的内存空间大小为12字节.
那接下来再看这个结构体的大小是多少呢?

struct Student
{
     int age;     // 4字节
     char *name; //8个字节
};

实际上这个结构体所分配的空间是16字节而不是12字节
这因为结构体所占用的存储空间 必须是 最大成员字节的倍数
这就是所谓的内存对齐,是因为计算机原理的一些特性所决定的.

结构体的定义方式、

除了上面我们定义结构体的方法外还有其他的方法.
1>

struct Student       // 1.定义结构体类型
{
     int age;
     double height;
     char *name;
} stu;               // 2.定义类型的同时来定义结构体变量

struct Student stu2;
stu.age = 0;
stu2.age = 2;

2>

struct {                //1. 定义了结构体的类型
     int age;           //   `
     char *name;        //   `   
}stu;                   //2.用这个类型定义一个变量

stu.age = 0;            //然后就可以直接使用这个变量了

缺点:没有办法多次定义变量。只能使用一次。
没有办法用这个类型定义其他变量,因为缺少了类型的名称。

还有常用的typedef,细节记不清了。回头想起来再来补上吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值