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

在64环境下编程遇到的一个有关问题

2012-02-08 
在64环境下编程遇到的一个问题,求助C/C++ code#include iostream using namespace stdint _tmain(int a

在64环境下编程遇到的一个问题,求助

C/C++ code
#include <iostream> using namespace std;int _tmain(int argc, _TCHAR* argv[]){    int* num = new int[5];    num[0] = 1;    num[1] = 2;    num[2] = 3;    num[3] = 4;    num[4] = 5;        int**pNum = (int**)num;    int j =0;    while( j< 5 )    {        printf("%d\n",pNum[0]+j);        j++;    }        return 0;}

在x64环境下为啥得不到预期的1 2 3 4 5输出呢?
求高手指点

[解决办法]
今天看了一篇“HarbinZJU”的文章,终于明白了楼主的代码问题出在哪里;
int类型在x64和x86系统下的长度都是32位(4字节),但是pointer(指针)的长度在x86系统下是32位(4字节),在x64系统下是64位(8字节),问题出现在“int**pNum = (int**)num
”这一句代码,强制转换了从int到指针;
其实只需要将num的地址传递给*pNum就可以解决,改为“int**pNum = &num;

热点排行