Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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++;指针类型的隐式转换_C++_Implicit Conversion_Pointer Conversion - Fatal编程技术网

C++ C++;指针类型的隐式转换

C++ C++;指针类型的隐式转换,c++,implicit-conversion,pointer-conversion,C++,Implicit Conversion,Pointer Conversion,考虑这种情况: int *ptr; int offset; ptr = <some_address>; offset = 10; int*ptr; 整数偏移量; ptr=; 偏移量=10; 假设偏移量是32位变量ptr具有类型int*,目标体系结构为64位(因此ptr为8字节变量),offset具有类型int。计算表达式*(ptr+偏移量)的值时将执行什么转换?我在哪里可以阅读到2003 C++标准?< P>这是标准关于这个的说明[ Exp.Ad],4:< /P> 将具有整数类型

考虑这种情况:

int *ptr;
int offset;
ptr = <some_address>;
offset = 10;
int*ptr;
整数偏移量;
ptr=;
偏移量=10;

假设偏移量是32位变量
ptr
具有类型
int*
,目标体系结构为64位(因此
ptr
为8字节变量),
offset
具有类型
int
。计算表达式
*(ptr+偏移量)
的值时将执行什么转换?我在哪里可以阅读到2003 C++标准?

< P>这是标准关于这个的说明[ Exp.Ad],4:< /P> 将具有整数类型的表达式添加到指针或从指针中减去时,结果具有指针操作数的类型。如果指针操作数指向数组object84的一个元素,且数组足够大,则结果指向与原始元素偏移的元素,从而使结果数组元素和原始数组元素的下标之差等于整数表达式。换句话说,如果表达式P指向数组对象的第i个元素,则表达式(P)+N(相当于N+(P))和(P)-N(其中N的值为N)分别指向数组对象的第i+N个元素和第i≠N个元素,前提是它们存在


简单地说,这意味着
ptr
指向的地址在写入
ptr+offset
时会增加
offset*sizeof(*ptr)
offset
变量。我猜较小的整数变量会升级,也就是<代码>偏移> 或 SigZyt <代码> STD::pTrDeffytt (如Joachim Pileborg指出),对于<代码> PTR 我想促进,但在2003 C++标准中没有发现这个特定的情况。FWW,指针类型不重要。(谁在乎它是否指向
\uuu int64
字符
,或者介于两者之间的任何东西)。可能存在对齐问题,但这似乎与您的问题无关。它是一个指针肯定是相关的。如果您试图说“假设平台数据指针是64位的,平台
int
是32位的,你应该说出来(至少我认为这是你的意思)。@WhozCraig,编辑了这个问题。谢谢你的评论。