用结构体指针动态分配个内存,操作起来输入第一个就会出问题。非得加上一个结构体变量才可以呢。那问题是我动态都已经分配空间了。为什么非要再分配个才能操作。想不明白呀。
因为你struct human的成员里有string类的成员,你是用malloc来动态开辟内存的,那么在开辟内存的时候string name这个成员就不会去调用它的默认构造函数,这是语法规定的。
那么string成员里面的字符指针就是个空指针,你cin就是访问空指针了。
这么写就好了--》》 struct human* pHead = new human;
malloc只会分配一定大小的空间,所以返回void *。想要使用需要强行转换类型以设定访问方式。所以malloc不会调用构造函数,因为malloc不知道你要怎么用
题主好:
下面这串代码试试呢
struct human* pHead = new human;
cpp不要用malloc