C中赋值的类型不兼容

时间:2012-02-25 06:54:11

标签: c function pointers structure

我对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";

但是我在这一行上有错误“赋值不兼容”。 我究竟做错了什么?

1 个答案:

答案 0 :(得分:9)

您无法使用赋值运算符将新值分配给数组,您必须将字符串"123"的内容复制到数组中。使用strcpy执行此操作:

strcpy(pa->a, "123");

另一个技巧是将数组包装在struct中(就像你在这里所做的那样),并将一个结构分配给另一个结构,以便为数组赋值。

可以做:

struct foo f1 = { "abc" };
struct foo f2 = { "123" };
f1 = f2;

f1.a现在将保留"123"

此外,main应返回int