struct player {
char name[20];
struct player *next;
};
int main() {
struct player *p;
p.name = "bob";
}
错误:在非结构或联合的情况下请求成员'name'
如何设置带结构的字符名称?
答案 0 :(得分:0)
在那段小代码中,你有多个问题。
首先,关于你得到的错误,几乎任何一本书或教程,无论好坏,都应该告诉你。您需要使用“箭头”运算符->
,如p->name
。
但是你会得到另一个错误,因为你不能分配给一个数组,只有copy。
当完成后,你还有一个错误,那就是你使用了一个未初始化的指针。未初始化的局部变量(p
)实际上是未初始化的。他们的价值将是不确定并且看似随意。尝试取消引用(使用->
执行的操作)这样的指针将导致undefined behavior。
简而言之,我建议你回到教科书,从头开始重新开始。
答案 1 :(得分:0)
最简单的解决方法是不将p
声明为结构的指针,而是实际的结构....然后使用strcpy()
设置name
。 C
不像其他编程语言那样使用=
进行字符串赋值。
struct player {
char name[20];
struct player *next;
};
int main() {
struct player p;
strcpy(p.name, "bob");
}