c++ - 你能解释一下指针和递归结构吗

标签 c++ c recursion struct fsm

你能解释一下结构体中的指针的含义吗?递归结构有何用处?您能为我解释一下这段代码吗?它在内存中的表现如何? 这是我的 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/

相关文章:

c++ - 在 C++ 中返回自动本地对象

C 代码 : Passing expression as an argument in recursion call

c++ - 指数递归与迭代的效率

java - 递归插入到双向链表的末尾

c++ - CMake + ccache : RULE_LAUNCH_COMPILE or CMAKE_<LANG>_COMPILER_LAUNCHER

c++ - Qt 中可调整大小和最大化的窗口

c++ - 用于匹配以空格分隔的多个坐标的正则表达式

c++ - 这会根据这些概率给我适当的随机数吗? C++

c - 使用 C 中的结构切换功能菜单时出现问题

c - 如何在TI ccs6.0中创建自己的头文件