Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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++_Arrays_Notation - Fatal编程技术网

C++ 有人能解释一下这个C++;符号

C++ 有人能解释一下这个C++;符号,c++,arrays,notation,C++,Arrays,Notation,j只是向量的索引吗? 例如,即使向量不是数组,C++也能使用数组符号来检索这些值吗? 如果是这样的话,我猜想它是通过引用向量来实现这个的, ,C++标准说,将一个(PODS)结构指针指向它的第一个元素的类型的指针将得到一个指向它的第一个元素的指针: if (vector1.x > ((float*)&vector1)[j]) 我怀疑代码告诉编译器不要在a1、a2和a3之间添加任何填充,这样,如果它对指针进行索引,指针将恰好指向它想要的浮点。如此之高 struct a {

j只是向量的索引吗?
例如,即使向量不是数组,C++也能使用数组符号来检索这些值吗?
如果是这样的话,我猜想它是通过引用向量来实现这个的,

,C++标准说,将一个(PODS)结构指针指向它的第一个元素的类型的指针将得到一个指向它的第一个元素的指针:

if (vector1.x > ((float*)&vector1)[j])
我怀疑代码告诉编译器不要在a1、a2和a3之间添加任何填充,这样,如果它对指针进行索引,指针将恰好指向它想要的浮点。如此之高

struct a {
    float a1;
    float a2;
    float a3;
};

a o1; ((float*)&o1); // points to o1.a1

这是平台依赖的,因为标准C++中的填充是不能改变的。查找代码如何安排它,以及我是否完全正确:)

“将结构指针转换为其第一个元素类型的指针将产生指向其第一个元素的指针”。即使结构是非POD?如果向量实际上是类,这是否适用?POD结构必须是聚合的。这意味着没有用户定义的构造函数,没有拷贝分配操作(我相信),只有公共内容,没有用户定义的析构函数和其他内容。简言之,它们必须与C代码兼容。@Adam:它是结构还是类都没有区别,重要的是它是POD还是非POD。听起来很有趣。达伦,你能告诉我们上面写着什么吗?(从来没有读过这样的书,我已经读过几次关于课程的章节)。
((float*)&o1)[1] // *would* return o1.a2