数据结构11

我勒个好多东西都没了😭。

*p先声明指针,然后后面无内型*p是通过地址修改。

也叫解引用符

C语言的结构体和java中的类很像。

sizeof(po) 是 C语言里的 sizeof 运算符,用来计算 po 这个结构体类型在内存中所占的字节数,简单来说就是"量一下这个结构体的'大小'"。

  1. 具体作用(结合之前的代码)

之前定义的 po 结构体是:

c

typedef struct {

int x; // int 类型占 4 字节(大部分系统)

int y; // int 类型占 4 字节

} po;

sizeof(po) 会计算这个结构体的总字节数: 4 + 4 = 8 字节。

把它传给 malloc ,就是告诉 malloc :"我需要一块和 po 结构体一样大的内存空间"------这样 malloc 就能准确分配 8 字节的空间,刚好能装下 po 结构体的两个 int 成员。

  1. 为什么要用到它?
  • 不用手动算大小:如果直接写 malloc(8) ,虽然结果一样,但如果后续修改了 po 结构体(比如加一个 char z; ), sizeof(po) 会自动变成 4+4+1=9 (实际会按内存对齐变成12字节,不过原理一样),而手动写的 8 就会出错;

  • 保证兼容性:不同系统里 int 的大小可能不同(比如某些嵌入式系统是 2 字节), sizeof 会自动适配当前系统的字节数,避免写死数值导致跨平台问题。

一句话总结

sizeof(po) 是"给 malloc 一个'尺子'",让它知道要分配多大的内存,确保能装下 po 结构体的所有内容。

p = (po*)malloc(sizeof(po));

还有Java的free垃圾回收。

// sizeof(po)计算po结构体的大小(int占4字节,两个int共8字节)

// (po*)是强制类型转换,把malloc返回的通用地址转成po结构体的指针

p = (po*)malloc(sizeof(po));

开辟完这个空间之后再挂个门牌号。

没错!在 p = (po*)malloc(sizeof(po)); 这个表达式中,执行顺序确实是从括号里的内容开始,按优先级逐步向外执行,具体步骤如下:

  1. 先执行最内层的 sizeof(po)

sizeof 是优先级很高的运算符,会先计算 po 结构体的大小(比如8字节),得到一个具体的数值,这是整个表达式的"基础数据"------相当于先确定要建的房子尺寸。

  1. 再执行 malloc(...)

malloc 是函数调用,它的参数就是第一步算出的结果(8字节),所以接下来会调用 malloc 申请8字节的内存,并返回这块内存的起始地址------相当于按确定的尺寸建好房子,拿到门牌号。

  1. 然后执行 (po*) 强制类型转换

将 malloc 返回的通用地址( void* )转换成 po* 类型------相当于给拿到的门牌号配上户型图,明确内存的解读方式。

  1. 最后执行赋值操作 =

把转换后的地址赋值给指针变量 p ------相当于把这个带户型图的门牌号交给 p 保管,后续通过 p 就能操作这块内存了。

简单说,执行顺序是: sizeof(po) → malloc(...) → (po*) → 赋值给 p ,完全遵循"从内层括号到外层、从高优先级到低优先级"的规则。

算法

算法的时间复杂度。

不过执行语句的快慢也和设备相关。

我们说的时间复杂度一般是上限,最慢的时候。

相关推荐
quantdash_cc1 天前
如何检查滚动收益率计算中的窗口长度不足?——从数学定义到 Pandas 实现
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
2601_966949651 天前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
benchmark_cc2 天前
如何为 QuantDash Python SDK 编写一个最小化的连接验证脚本?
python·数据分析·pandas·量化交易·股票数据·quantdash
万粉变现经纪人2 天前
如何解决 pip install 安装报错 检测到 yanked 版本需更换可用版本 问题
人工智能·python·scrapy·numpy·pandas·pyqt·pip
烂蜻蜓3 天前
Pandas入门教程(十三):Parquet 与 Feather——高性能列式存储格式实战
pandas
gCode Teacher 格码致知3 天前
Pandas教学-21:subplots的使用
python·pandas·1024程序员节
benchmark_cc3 天前
量化开发中,什么时候应该停止手动下载股票数据?
python·数据分析·pandas·量化交易·1024程序员节·股票数据·quantdash
quantdash_cc3 天前
如何利用标的信息为研究股票池补充名称和交易所信息?
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
benchmark_cc4 天前
QuantDash 安装成功后,如何验证 Python 环境可以正常导入 SDK?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
benchmark_cc4 天前
个人量化系统搭建:如何利用 QuantDash 实现 A 股日 K 线前复权数据的高效获取与质量校验?
python·数据分析·pandas·量化交易·股票数据·quantdash