struct mystruct a = b; 这有效吗?直接赋值结构变量,它在C中是否有效?

mk.*_*k.. 5 c coding-style

我有以下代码.

struct rectangle {
int length;
int breadth;
};

int main (void) 
{
    struct rectangle a,b;
    a.length = 10;
    a.breadth = 5;

    b=a;  
    printf("\nValues of b.length = %d, b.breadth=%d\n",b.length,b.breadth);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的赋值是一个有效的语句吗?(b = a)我在我的项目中这样做了.我得到了评论评论说,这种类型的任务是错误的,我应该使用memcpy.我打印了b的值并检查了.值是正确的.我想知道为什么上面的任务是错的?如果将结构变量传递给函数并将其捕获到单独的变量中会发生什么错误?我希望我对我的问题很清楚.如果我不清楚我的问题,请回复我.

unw*_*ind 8

在我看来,审稿人是误入歧途的.这是非常正确的,结构值就像其他任何一样,分配它们就好了.它的方式,方式,比调用更清晰memcpy(),并且(很多!)不那么容易出错.

我总是必须停下来思考什么传递作为memcpy()复制相同类型的值时的第三个参数,因为我发现哪个选项最明显是不明显的.所以,这是一个较少的教学问题,当然它只是读得更好.

此外,编译器可能足够智能,不会复制可能潜伏在那里的任何额外的填充和/或对齐字节,这memcpy()是永远无法做到的.它是一个更高级别的构造,因此"更好".

  • 我建议你的老板用更有能力的人取代那个人. (4认同)