请选择 进入手机版 | 继续访问电脑版

Q1024[专业C/C++]

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1059|回复: 0

05_0400 5.4 地址算术运算

[复制链接]

61

主题

65

帖子

426

积分

中级会员

Rank: 3Rank: 3

积分
426
发表于 2021-11-18 15:41:27 | 显示全部楼层 |阅读模式
既然sizeof(char*)/sizeof(short*)/sizeof(int*)/sizeof(long long*)....的值都一样,那还要指针类型做什么?
举例:
学生* p; p++表示访问下一个学生
班级* p; p++表示访问下一个班级
年级* p; p++表示访问下一个年级
学校* p; p++表示访问下一个学校
这些操作是由编译器完成的
C语言保证, 0永远不是有效的数据地址
指针与整数之前不能直接转换,但0(NULL)是个例外

指针的运算,说直白点,就是地址值的运算,只要有道理,你怎么操作都行

内存对齐与非常有用的ptrdiff_t
用于兼容32位和64位cpu

1字节对齐的方法
方法一:
#pragma pack (n) 作用:C编译器将按照n个字节对齐。
#pragma pack () 作用:取消自定义字节对齐方式。

方法二:
#pragma pack (push,1) 作用:是指把原来对齐方式设置压栈,并设新的对齐方式设置为一个字节对齐
#pragma pack(pop) 作用:恢复对齐状态


代码:https://q1024.com/p/item.php?u=krc
视频:https://www.bilibili.com/video/BV12L4y1Y76R?p=42



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Q1024

GMT+8, 2022-8-8 06:00 , Processed in 0.009878 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表