读书人

关于C++中的布局new的一个小疑点

发布时间: 2013-04-22 16:01:35 作者: rapoo

关于C++中的布局new的一个小问题
代码如下:


#include<iostream>
#include<new>

const int BUF=512;
const int N=5;
char buffer[BUF];

int main()

{
using namespace std;

double *pd1,*pd2;
int i;
cout<<"calling new and placement new:\n";
pd1=new double[N];
pd2=new(buffer) double[N];
for(i=0;i<N;i++)
pd2[i]=pd1[i]=1000+20.0*i;
cout<<"buffer addresses:\n"<<" heap: "<<pd1
<<" static: "<< (void *)buffer<<endl;
return 0;
}


问:
代码中最后一句里为什么要用:(void *)buffer 啊?(想输出buffer的地址) 为什么不能直接用buffer?

[解决办法]
因为 buffer 是 char 数组,不加 void* 的话会当作字符串输出的。

读书人网 >C++

热点推荐