gpt4 book ai didi

c - 结构mystruct a = b;这有效吗?结构变量直接赋值,在C中有效吗?

转载 作者:太空狗 更新时间:2023-10-29 14:53:28 25 4
gpt4 key购买 nike

我有以下代码。

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;
}

上面的赋值是否有效?(b=a) 我在我的项目中是这样做的。我收到了一条评论意见,指出这种类型的分配是错误的,我应该使用 memcpy 来完成。我打印了 b 的值并进行了检查。这些值是正确的。我想知道为什么上面的分配是错误的? 如果将结构变量传递给函数并将其捕获在单独的变量中时会发生什么错误?我希望我的问题很清楚。如果我对我的问题不清楚,请回复我。

最佳答案

在我看来,审稿人被误导了。这是非常正确的,结构值就像任何其他值一样,分配它们就可以了。而且它比调用 memcpy() 更清晰,而且更不容易出错。

在复制相同类型的值时,我总是不得不停下来思考将什么作为第三个参数传递给 memcpy(),因为我发现它不是显而易见的选择。所以,这是一个不那么教学的问题,当然它只是读起来更好。

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

关于c - 结构mystruct a = b;这有效吗?结构变量直接赋值,在C中有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com