📄 new.cpp
字号:
// 3.下面是一个结构声明:
// struct chaff
// {
// char dross[20];
// int slag;
// };
// 编写一个程序,使用布局new操作符将一个包含两个这种结构的数组放在一个缓冲
// 区中.然后,给结构的成员赋值(对于char数组,使用strcpy() ),并使用一个循环来
// 显示内容.方法1是像程序清单9.9那样将一个静态数组用作缓冲区;方法2是使用常
// new操作符来分配缓冲区
#include <iostream>
#include <cstring>
#include <new> // for placement new
const int BUF = 1000;
const int N =2;
struct chaff
{
char dross[20];
int slag;
};
int main()
{
using namespace std;
char buffer[BUF];
chaff * p1 = new chaff[N]; // use heap
chaff * p2 = new (buffer) chaff[N]; // use buffer array
for(int i = 0; i<N; i++)
{
cout<<"Please input the dross"<<i+1<<": ";
char temp[20];
cin.get(temp,20);
while(cin.get() != '\n') // 截掉多余字符
continue;
strcpy(p1[i].dross,temp);
strcpy(p2[i].dross,temp);
cout<<"Please input the slag"<<i+1<<": ";
cin>>p1[i].slag;
while(!cin) // if bad input,input again
{
cin.clear();
while(cin.get() != '\n') // 截掉多余字符
continue;
cout<<"Please a integer for slag"<<i+1<<": ";
cin>>p1[i].slag;
}
cin.get();
p2[i].slag = p1[i].slag;
}
cout<<"Buffer addresses:\n"<<" heap: "<<p1
<<" static: "<<(void *) buffer <<endl;
for(int j = 0; j<N; j++)
{
cout<<p1[i].dross<<"->"<<p1[i].slag<<" at "<<&p1[i];
cout<<p2[i].dross<<"->"<<p2[i].slag<<" at "<<&p2[i]<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -