Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        5年前关闭。
                                                                                            
                
        
您能解释一下结构内部的指针是什么意思吗?递归结构又如何有用?您能帮我解释一下这段代码吗?以及它在内存中的表现如何?
这是我的C代码:

struct State {
unsigned long Out;
unsigned long Time; //ms
const struct State *Next[4];};

最佳答案

在这种情况下,Next可以在只读地址(4个不可修改的引用)中保存4个指向相同类型(struct State)对象的指针。

一个例子:

#include <stdio.h>
#include <stdlib.h>

struct State {
    unsigned long Out;
    unsigned long Time; //ms
    const struct State *Next[4];
};

void fn(struct State *data)
{
    /* data->Next[0]->Out = 1; error: assignment of member ‘Out’ in read-only object */
    for (int i = 0; i < 4; i++) {
        printf("%ld %ld\n", data->Next[i]->Out, data->Next[i]->Time);
        free((struct State *)data->Next[i]); /* cast to non const */
    }
}

int main(void)
{
    struct State data;
    struct State *next;

    for (int i = 0; i < 4; i++) {
        next = malloc(sizeof(*next));
        next->Out = i;
        next->Time = i * 10;
        data.Next[i] = next;
    }
    fn(&data);
    return 0;
}

关于c++ - 您能解释一下指针和递归结构吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25156572/

10-12 14:30
查看更多