问题描述
- int型指针转成short型指针 然后自加一 地址移动四位?
-
一个int型指针强制转换成short型 然后自加一 为什么地址还是移动四个字节
而不是两个字节?
想不明白
解决方案
不同的编译器不同。一些编译器,为了优化处理器对内存的访问,所有的变量按照4字节对齐。
我这里是2
http://codepad.org/lNNoQMVC
#include <stdio.h>
int main()
{
int * ptr = 0;
short * sptr = ((short *)ptr + 1);
printf("%d %d", (int)ptr, (int)sptr);
}
0 2
还有可能,你的括号打错了,导致先算了加1,然后才强制转换。
解决方案二:
强制转换如果是临时的,就不会有效果啊~
解决方案三:
我也遇到过这样的问题
解决方案四:
还是要看你代码是怎么写的
解决方案五:
贴出你的代码,程序这种问题有时候的具体代码具体分析
时间: 2024-10-21 16:39:27