Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在使用相似的逻辑递增两种不同的指针类型时会得到不同的地址?_C++_Pointers_Pointer Arithmetic - Fatal编程技术网

C++ 为什么在使用相似的逻辑递增两种不同的指针类型时会得到不同的地址?

C++ 为什么在使用相似的逻辑递增两种不同的指针类型时会得到不同的地址?,c++,pointers,pointer-arithmetic,C++,Pointers,Pointer Arithmetic,我不明白为什么当我的浮点数为4时,浮点数的地址会增加16。有人能解释一下吗 代码: char*mychar=new char[SIZE]; 浮动*我的浮动=新浮动[大小]; 对于(int i=0;i

我不明白为什么当我的浮点数为4时,浮点数的地址会增加16。有人能解释一下吗

代码:

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)