【C++高手进】 求指导-----关于vector,调半天 不解其中缘由
一个开源代码中的部分,现将问题简单化。代码如下:
- C/C++ code
#include <iostream>#include <vector>using namespace std;int main(){// int i, j; const int N = 5; vector<int> _nodes(N*2); for(int i = 0; i < 10; i++) { _nodes[i] = i + 1; } int (*nodes)[2] = (int(*)[2])&_nodes[0];//???? cout<<nodes[0]<<"\t"<<nodes[1]<<endl; return 0;}看过结果,也单步过。结果如下:
【1】值关系: nodes[0] = _nodes[0] = 1; nodes[1] = _nodes[1] = 2;
【2】地址关系:两个地址并不相等;&_nodes = 0x0013ff38; &nodes[0] = 0x00035de0
虽然结果知道了,但是对原理任然不解。
主要问题是:int (*nodes)[2] = (int(*)[2])&_nodes[0]; 这行代码到底是怎么实现赋值的,尤其是等号右边部分,看不懂
[解决办法]
[解决办法]