C++中用new创建结构体指针,赋初值不合法?

2025-02-27 02:41:30
推荐回答(4个)
回答1:

在C++中,{...}这种形式不是结构的常数形式,而是初始化的一种写法。这种写法只能用于初始化。

虽然赋值和初始化在C++里面可以用=,但是语法上有差异。

这样写可以:
CandyBar cb = {"hi", 0.5, 1};
这样写就不行:
CandyBar cb;
cb = {"hi", 0.5, 1};
因为前者是初始化,后者是赋值。

语法就是这样规定的。可能最初规定的时候应该是有原因的,但现在已经不可考。

回答2:

你搞错了,ps指的是一个地址,那么*ps指的是地址的值,注意啦:ps[0]指的是ps首地址指的值,而不是一个地址,明白这句话了很自然就可以理解,为什么*(ps[0])不能赋值了。

回答3:

字符串类型的赋值要用strcpy,
例如strcpy(brand," ")
不过要加上#include

回答4:

CandyBar *ps = new CandyBar [3]; 定义方法不对