C++ 为什么在使用相似的逻辑递增两种不同的指针类型时会得到不同的地址?
我不明白为什么当我的浮点数为4时,浮点数的地址会增加16。有人能解释一下吗 代码:C++ 为什么在使用相似的逻辑递增两种不同的指针类型时会得到不同的地址?,c++,pointers,pointer-arithmetic,C++,Pointers,Pointer Arithmetic,我不明白为什么当我的浮点数为4时,浮点数的地址会增加16。有人能解释一下吗 代码: char*mychar=new char[SIZE]; 浮动*我的浮动=新浮动[大小]; 对于(int i=0;i
char*mychar=new char[SIZE];
浮动*我的浮动=新浮动[大小];
对于(int i=0;i 请注意,myfloat
是一个float*
。这意味着如果您编写一个类似
myfloat + n
结果将是指向float
的指针,即n
在float
s数组中的位置,其地址从myfloat
开始。换句话说,在此处添加n
将自动将指针增加n*sizeof(float)
bytes,因为添加指针会知道对象的大小
因此,如果你写
myfloat + n * sizeof(float)
您不是通过n*sizeof(float)
字节向前跳,而是通过n*sizeof(float)*sizeof(float)
字节向前跳,正好是16n字节
希望这有帮助!为什么会有人否决…………令人困惑,因为指针运算是以单位而不是字节为单位的。@DominikC不,只是myfloat+i
@H2CO3公平,我没有,但我相信你。尽管我会说这不是一类很容易搜索的问题,特别是对于初学者来说。如果你知道“指针算术”这个短语,那么你已经知道这个问题的答案了。@jameswoo是的。虽然你是初学者,但编译器从来没有错过。非常感谢你!你的答案非常有用
myfloat + n
myfloat + n * sizeof(float)