c - C如何处理结构赋值

标签 c struct variable-assignment

假设我有一个这样的结构:

typedef struct {
    char *str;
    int len;
} INS;

以及该结构的数组。

INS *ins[N] = { &item, &item, ... }

当我尝试访问它的元素时,不是作为指针,而是作为结构本身,所有字段都被复制到一个临时的本地位置?

for (int i = 0; i < N; i++) {
    INS in = *ins[i];
    // internaly the above line would be like:
    // in.str = ins[i]->str;
    // in.len = ins[i]->len;
}

?

因此,当我增加结构字段时,分配操作的成本会更高吗?

最佳答案

正确,in*ins[i]副本

不要在意你的内存消耗,但你的代码很可能不正确:对象 in 在循环体结束时死亡,以及你所做的任何更改in 没有持久效果!

关于c - C如何处理结构赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11955135/

相关文章:

c - Frama-c [内核] 用户错误 : Length of array is zero. 不支持此扩展

c - 打开文件实际上是做什么的?

c - 它被认为是全局变量吗?结构和链表

javascript - 对逗号赋值的困惑

javascript - 在同一语句中声明依赖的 javascript 变量是否安全?

c++ - 如何在 C/C++ 中获取多维数组的列?

c - OpenGL 问题 : 'incompatible' vs 'cannot find'

c - 如何在linux下用c语言创建定时器?

使用 ARM 进行 C 编程 - 将结构输出和输入到文件

c - 如何在 C 编程中根据 char 变量命名结构