理解指针的运算
原创
©著作权归作者所有:来自51CTO博客作者henrylin的原创作品,请联系作者获取转载授权,否则将追究法律责任
当针对一个指针进行加法减法时,其完成的是将内存中的指针向前或向后移动,其移动的步长对应于指针所指向的数据类型的字节长度.如:
double b;
double *dp=&b;
cout<<dp<<endl;
cout<<dp+1<<endl;
cout<<dp+2<<endl;
输出:
0012FF70
0012FF78
0012FF80
可以看出每次移动的步长是sizeof(double)既8个字节.
语句cout<<dp+2<<endl;很有可能被C++编译器改造成:
cout<<(double*)((int)dp=2*sizeof(double))<<endl;
而对两个double型的指针进行减法dp2-dp1很有可能被改造成:
((int)dp2-(int)dp1)/sizeof(double)
由此可知我们不能针对void*进行加减法运算,因为sizeof(void)是不成立的.
下一篇:我的友情链接
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C语言指针的基本认识
C语言指针的基本认识
指针变量 指针类型 指针数组 -
指针的运算
ptr=&array;//这
数组 数组名 取地址 -
关于this指针的理解
1.1、理解this有如下类定义,该类中有一个成员变量:name以及两个成员方法,set_name
成员函数 成员方法 this指针 -
10深入理解C指针之---指针运算和比较
深入理解C指针之---指针运算和比较
深入理解C指针 数据类型 结构体指针 字段 #include