【问题标题】:Incompatible types in assignment in CC中赋值中的不兼容类型
【发布时间】:2012-02-25 06:54:11
【问题描述】:

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

但我在这一行出现错误“分配中的类型不兼容”。 我究竟做错了什么?

【问题讨论】:

标签: c function pointers structure


【解决方案1】:

您不能使用赋值运算符为数组分配新值,您必须将字符串 "123" 的内容复制到您的数组中。使用strcpy 这样做:

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

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

你可以做:

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

f1.a 现在将持有"123"。

另外,main 应该返回一个 int。

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 2012-09-02
    • 2021-01-12
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2017-03-26
    相关资源
    最近更新 更多