返回信息流大牛们能看一下下面这三行代码有什么问题么?
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'
各位知道是怎么回事么?
这是一条镜像帖。来源:北邮人论坛 / cpp / #41762同步于 2010/7/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
一个指针的问题
weiwei
2010/7/24镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
不行啊,我改了
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;
: --
: ...................
都是动态数组,所以大小不一定需要是常量。所以加不加const都行。
你的bufferW+i指向了非法的地址(0x00000000~0x0000FFFF),所以运行会出错。
恩,我将代码改成这样后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),所以运行会出错。
: --
: ...................