linux c 两个指针相减,[转] C++指针加整数、两个指针相减的问题
http://blog.csdn.net/onlyou930/article/details/6725051
说来惭愧,写C++有一段时间了。这个问题从来没有认真考虑过,此次标记于此:
考虑如下问题:
1 char a[20];
2 int *ptr = (int *)a;
3 ptr++;
第3句ptr++实际为ptr右移一个int空间(即4个字节)的距离,此时ptr指向a[4]。
若第3句改为
int *p = ptr + 2;
则p指向a[8]
这里说明当指针加整数时,指针向后偏移的距离看的是声明该指针的类型(此处即int),而非指向的实际类型(此处即char)!!!
另外,如果我就是想在第3句处得到a后面一个字节的地址怎么办?
可以这样:
void *p = a;
p = p + 1;
(这里注意:c++不允许p++或++p)
void类型的指针加整数,即为指针实际向后偏移的字节数。
同理,若
int *pa0 = (int *)&a[0];
int *pa4 = (int *)&a[4];
std::size_t s = pa4 - pa0;
则s等于1
那么如果
int *pa3 = (int *)&a[3];
int *pa5 = (int *)&a[5];
std::size_t s2 = pa3 - pa0;
std::size_t s3 = pa5 - pa0;
这里的s2,s3又分别等于多少呢,
是的,如你所想:s2等于0,s3等于1
可见,同类指针(当然也只有同类指针允许相减,如pa3和pa0)相减得到的整数值,等于两指针减的距离除以sizeof(声明指针的类型),然后取整(此处即static_cast((pa3 - pa0) / sizeof(int)))。
JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)(5)
1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合A ...
oracle 两个时间相减
oracle 两个时间相减默认的是天数 oracle 两个时间相减默认的是天数*24 为相差的小时数 oracle 两个时间相减默认的是天数*24*60 为相差的分钟数 oracle 两个时间相减默认 ...
C#两个时间相减
linux c 两个指针相减,[转] C++指针加整数、两个指针相减的问题相关推荐
- oracle时间相减得到天_oracle中计算两个日期之间得天数、月数、年数
1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_ ...
- 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现...
图像相减的MATLAB 仿真及光栅滤波法实验实现 毕业设计(论文)中期报告题目图像相减的MATLAB仿真及光栅滤波法实验实现院(系)光电学院专业光信息科学与技术班级090106姓名陈凤学号090106 ...
- 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现.doc...
您所在位置:网站首页 > 海量文档  > 计算机 > 图形图像 图像相减的MATLAB 仿真及光栅滤波法实验实现.do ...
- ACMNO.31 C语言-宏求余 输入两个整数,求他们相除的余数。用带参的宏来实现,编程序。
题目描述 输入两个整数,求他们相除的余数.用带参的宏来实现,编程序. 输入 a b两个数 输出 a/b的余数 样例输入 3 2 样例输出 1 来源/分类 C语言 题目截图: 思路: 这个是求余数,应该 ...
- linux命令行下命令参数前的一横(-)和两横(--)的区别
linux命令行下命令参数前的一横(-)和两横(--)的区别 原文转自:http://blog.csdn.net/songjinshi/article/details/6816776 在解释这些区别之 ...
- ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)
1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 177 Solved: 136 [Submit][Stat ...
- c语言学习-利用函数指针的方法,求任意给出两个整数的x和y的和、差。
编写一个程序,利用函数指针的方法,求任意给出两个整数的x和y的和.差. 程序流程图: 代码: #include<stdio.h> void main() {int x,y,*m=& ...
- java 月度相减_java根据日期获取月龄,按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。...
/** * 函数名: getMonthNum * 功能: 相差月数 * 参数: @param start 开始时间 * 参数: @param end 结束时间 * 返回值: int */ public ...
- 三相两相坐标变换matlab仿真,交流电机的三相静止到两相静止及两相静止到两相旋转坐标变换的分析及MATLAB仿真...
一 笼 一田娜侧如 伺服电动机资 一 交流电机的三相静止到两相静止及两相静止到两相旋转坐标变换的分析及日 仿真 兰州交通大学自动化与电气工程学院 吴炳娇 摘 要 矢量变换在交流电机复杂模型的简化中发挥 ...
最新文章
- screen史上最全教程
- 浏览器打不开网页问题
- Sublime Test3 添加一键格式化XML文件插件
- Linux CentOS 6.8 安装 Docker
- 计算机组装与维护报告论文,计算机组装与维护实习报告范文
- Toggle Buttons(二)
- Android的存储方式
- 简单的Python文件服务器和HTTP POST上传文件C代码
- 1.5 密码学应用PKI体系
- java里如何表示黑桃方片_扑克牌中(黑桃,方片,红心,梅花)各代表什么意思?据我所知红心是代表爱。...
- Spark MLBase分布式机器学习系统入门:以MLlib实现Kmeans聚类算法
- 小米路由器 mini 重新刷回官方固件
- html+dom+chm,HTML DOM getElementsByClassName() - JavaScript - 菜鸟学堂-脚本之家
- java多线程学习笔记--一.多线程的基础知识
- htc服务器更新系统,HTC U Ultra刷机教程 HTC U Ultra卡刷ruu升级更新官方系统
- 数据分析应该怎么学习?适合什么人学?
- sharepoint 2010 在线学习系统-培训系统-资源库系统 扩展
- 中南大学计算机辅助工艺设计,中南大学计算机辅助制造 实验报告1.pdf
- Spring Boot 学习第一步(搭建初步环境)
- 以“有用”为圆心:重新认识智慧城市的“高手之路”