首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【C++】 求指导-关于vector,调半天 不解其中缘由

2012-03-31 
【C++高手进】 求指导-----关于vector,调半天 不解其中缘由一个开源代码中的部分,现将问题简单化。代码如下:C

【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]; 这行代码到底是怎么实现赋值的,尤其是等号右边部分,看不懂

[解决办法]
探讨

看了楼上各位的回答,比较茫然,你们没弄懂我真正要问的问题。
我要问的是:
int (*nodes)[2] = (int(*)[2])&amp;_nodes[0];
上面这行代码中右边部分:(int(*)[2])&amp;_nodes[0]; 到底是什么意思,它到底是怎么实现最终将_nodes中的前2个值赋值给左边的nodes中的,这才是我要问的问题

[解决办法]
探讨
你真的调试了吗?
对于你的第一点就错了
【1】值关系: nodes[0] = _nodes[0] = 1; nodes[1] = _nodes[1] = 2;//错的

*node[0]=1 *node[1]=3

热点排行