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

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/

10-12 06:24