我对c中的指针和结构有点问题。
struct foo{
char a[15];
}
void asn_foo(struct foo *pa){
(*pa).a = "123";
}
main()
{
struct foo foo1[2], *pf;
pf = &(foo1[0]);
asn_foo(pf);
}
我正在尝试通过以下方式分配新值:
(*pa).a = "123";
但是我在这一行上有错误“赋值不兼容”。 我究竟做错了什么?
答案 0 :(得分:9)
您无法使用赋值运算符将新值分配给数组,您必须将字符串"123"
的内容复制到数组中。使用strcpy
执行此操作:
strcpy(pa->a, "123");
另一个技巧是将数组包装在struct
中(就像你在这里所做的那样),并将一个结构分配给另一个结构,以便为数组赋值。
你可以做:
struct foo f1 = { "abc" };
struct foo f2 = { "123" };
f1 = f2;
f1.a
现在将保留"123"
。
此外,main
应返回int
。