C 语言学习日志结构体、空类型指针、qsort、共用体)

一、结构体指针

1. 基本概念

  • 结构体是用户自定义的数据类型,它可以包含多个不同类型的成员变量。使用结构体指针可以更方便地操作结构体数据。
  • ptr 是一个指向 struct Person 的指针,使用 -> 运算符可以方便地访问结构体成员。

2. 动态分配结构体内存

  • 可以使用 malloc 函数为结构体动态分配内存,这样可以在运行时创建结构体实例。
  • 这里使用 malloc 分配内存,使用 strcpy 复制字符串到 name 成员,使用 free 释放内存。

二、空类型指针(void 指针)

1. 特性

  • void 指针可以指向任何类型的数据,但不能直接解引用,因为编译器不知道它所指向的对象类型。

2. 类型转换

  • 需要将 void 指针转换为具体类型的指针后才能解引用。

3. 函数参数中的应用

  • 常用于函数参数,当函数需要处理不同类型的数据时。
  • printValue 函数使用 void 指针接收不同类型的数据,根据 type 参数进行相应的类型转换和解引用。

三、qsort 函数

1. 快速排序函数的使用

  • qsort 是 C 语言标准库函数,用于对数组进行快速排序。它需要四个参数:数组指针、元素数量、元素大小和比较函数。

  • compare 函数是一个比较函数,它接受两个 const void * 指针,需要将它们转换为具体类型指针进行比较。
  • qsort 根据 compare 函数的返回值进行排序,负数表示 a < b,正数表示 a > b,0 表示 a == b

2. 排序不同类型的数据

  • qsort 可以排序任何类型的数据,只需要提供相应的比较函数。

四、共用体指针

1. 基本概念

  • 联合体是一种特殊的数据结构,它的所有成员共享同一块内存空间,不同成员可以存储不同类型的数据,但同一时间只能存储一个成员。
  • 这里修改一个成员的值会覆盖其他成员的值,因为它们共享内存。

2. 共用体指针

  • 可以使用联合体指针来操作联合体数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值