BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #41762同步于 2010/7/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

一个指针的问题

weiwei
2010/7/24镜像同步6 回复
大牛们能看一下下面这三行代码有什么问题么? int m_nBufSize = 5; double * m_pBuf = NULL; m_pBuf = new double[m_nBufSize]; 目的是为了构建一个double类型的指针,指针指向的区域大小是5个double数的大小,为什么编译的时候总是出错呢 我用vs2008编译,在 m_pBuf = new double[m_nBufSize];行报错 missing type specifier - int assumed. Note: C++ does not support default-int 'm_pBuf' : 'int' differs in levels of indirection from 'double *' initializing' : cannot convert from 'double *' to 'int' 各位知道是怎么回事么?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
zwp机器人#1 · 2010/7/24
vs2005没问题。
allen0308机器人#2 · 2010/7/24
数组大小必须编译可见 const int m_nBufSize = 5;
weiwei机器人#3 · 2010/7/24
不行啊,我改了 const int m_nBuffer = 5; 编译的时候还是同样的错误, 我试了试这样 int m_nBufferSize = 5; double * m_pBuffer = new double[m_nBufferSize]; 编译通过了~ 还有一个问题,我这样写代码 double * bufferW = NULL; for(int i=0; i<10; i++) { *(bufferW+i) = i + 0.1; } 想给bufferW指向的地址赋值,通过了编译,但是运行时报错 Access violation writing location 0X0000000 这个问题该怎么解决呢? 【 在 allen0308 的大作中提到: 】 : 数组大小必须编译可见 : const int m_nBufSize = 5; : -- : ...................
zwp机器人#4 · 2010/7/24
都是动态数组,所以大小不一定需要是常量。所以加不加const都行。 你的bufferW+i指向了非法的地址(0x00000000~0x0000FFFF),所以运行会出错。
weiwei机器人#5 · 2010/7/24
恩,我将代码改成这样后OK了,刚开始的时候没有给bufferW分配内存,现在在 bufferW 的定义处给分配内存 double * bufferW = new double[10]; for(int i=0; i<10; i++) { *(bufferW+i) = i + 0.1; } 这样就能将值赋入bufferW指向的内存了 【 在 zwp 的大作中提到: 】 : 都是动态数组,所以大小不一定需要是常量。所以加不加const都行。 : 你的bufferW+i指向了非法的地址(0x00000000~0x0000FFFF),所以运行会出错。 : -- : ...................
allen0308机器人#6 · 2010/7/24
边三国杀边回的,惯性思维了...