用MALOC动态分配C++中的一个结构
为什么??这困扰了我好几天…文章[0]没有初始化,即文章[0]没有调用结构产品的构造函数。因此,项目[0].productName也尚未初始化用MALOC动态分配C++中的一个结构,c++,c,struct,malloc,allocation,C++,C,Struct,Malloc,Allocation,为什么??这困扰了我好几天…文章[0]没有初始化,即文章[0]没有调用结构产品的构造函数。因此,项目[0].productName也尚未初始化 使用新产品[n]而不是产品*mallocn*sizeofproduct来初始化数组元素,并通过元素的传递性来初始化元素的成员。使用新产品而不是malloc ing对象 cin >> article[i].productName; 当您使用新操作符分配内存时,它会做两件事: 它分配内存来保存一个对象; 它调用构造函数来初始化对象。 在mall
使用新产品[n]而不是产品*mallocn*sizeofproduct来初始化数组元素,并通过元素的传递性来初始化元素的成员。使用新产品而不是malloc ing对象
cin >> article[i].productName;
当您使用新操作符分配内存时,它会做两件事: 它分配内存来保存一个对象; 它调用构造函数来初始化对象。 在malloc中,只执行第一部分,因此结构成员未初始化。尝试使用以下方法:
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct product{
string productName;
float price;
};
int main()
{
struct product *article;
int n=2; // n represent here the number of products
article= (product*) malloc(n * sizeof(product));
for(int i=0;i<n;i++)
{
cin >> article[i].productName; // <=> (article+i)->productName;
cin >> article[i].price;
}
for(int i=0;i<n;i++)
{
cout << article[i].productName <<"\t" << article[i].price << "\n";
}
return 0;
}
product *article = new product[n];
使用cin时,项目[0]未初始化。如果你使用新的[],它应该工作。< /p>你能编译这个代码吗?把它当作一个对象的教训,为什么你不在C++程序中使用Maloc等。是的,我可以编译它,并且@ JoaAdNayLffffer-Yes,这是非常有用的;我无法想象我怎么能靠我自己来解决这个问题,谢谢,伙计。这一定是一个新的数组,不是吗?@YassineBakkar use std::vector articlen。然后,内存将自动释放。
#include <iostream>
#include <string>
using namespace std;
struct product{
string productName;
float price;
};
int main()
{
int n = 2; // n represent here the number of products
product *article = new product[n];
for (int i = 0; i<n; i++)
{
cin >> article[i].productName; // <=> (article+i)->productName;
cin >> article[i].price;
}
for (int i = 0; i<n; i++)
{
cout << article[i].productName << "\t" << article[i].price << "\n";
}
return 0;
}