c-如果我们用=运算符而不是memcpy()来分配不同的结构,会怎么样



如果执行以下代码,data1的内容是什么?

struct {
int a;
char b;
}st1;
struct {
char c;
int d;
}st2;
main()
{
    struct st1 data1 = {0};
    struct st2 data2 = {'A',10};
    data1 = data2;
}

只有当两个结构具有相同类型时,这才有效。否则,您必须得到一个编译错误。

(如果你的编译器生成了一个可执行文件,它可以做任何事情)。

如果执行以下代码,data1的内容是什么?

您的代码无法执行,因为它不会编译。你会得到一个编译器错误,例如

"error: incompatible types when assigning to type ‘struct st1’ from type ‘struct st2’" 

这将导致一个错误,因为st1和st2是临时结构的对象。所以你最好试试这个。。。您只需要在定义临时结构期间创建对象。

# include <stdio.h>
struct {
    int a;
    char b;
}st1 = {0};
struct {
    char c;
    int d;
}st2 = {'A', 10};;
int main()
{
//  struct st1 data1 = {0};
//  struct st2 data2 = {'A',10};
//  data1 = data2;
    return 0;
}

最新更新