【C++ Primer Plus习题】9.3
问题:
解答:
#include <iostream>
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
int set_chaff(chaff& f, char* c, int n)
{
if (strlen(c) > 0)
{
strcpy_s(f.dross, c);
f.slag = n;
return 1;
}
return 0;
}
void show_cahff(const chaff& f)
{
cout << "dross: " << f.dross << endl;
cout << "slag: " << f.slag << endl;
}
int main()
{
char buffer[1024];//缓冲区
char st[20];
int slag, n = 0;
chaff* pcf = new (buffer)chaff[2];//在缓冲区中构造
cout << "请输入dross: ";
cin.getline(st, 20);
cout << "请输入slag: ";
cin >> slag;
while (strlen(st)>0)
{
cin.get();
set_chaff(pcf[n++], st, slag);
if (n >= 2)break;
cout << "请输入dross: ";
cin.getline(st, 20);
cout << "请输入slag: ";
cin >> slag;
}
for (int i = 0; i < 2; i++)
{
show_cahff(pcf[i]);
}
return 0;
}
运行结果:
考查点:
- 缓冲区
注意:
- 静态缓冲区分配好,就不需要delete了
- 动态缓冲区(内存),就需要使用delete
- 缓冲区的使用
- 区别
2024年9月2日20:20:52