定义运算上下文时,里面定义Operation 和 Operation* 有什么区别呢?

来源:15-2 计算器核心模块接口设计

gltzlike

2021-08-30

老师,定义运算上下文时,您中间定义运算符时是直接定义的 Operation 类型,那在这里定义为 Operation* 可以吗?我个人理解是可以,仅仅是变换为对结构体指针的操作。

  Operation previous_operation; 
  Operation current_operation;   

只不过此时如果进行 CalcContext 的初始化,直接 malloc 可行吗:CalcContext *calc_context = malloc(sizeof(CalcContext));,还是要对其中指针变量也要使用malloc去分配一次内存?

typedef struct {
  char input_buffer[MAX_CHAR + 1];
  int input_buffer_position;
  double result;

  Operation *previous_operation;  // 指针类型
  Operation *current_operation;   // 指针类型

  void (*display_text)(char *);
} CalcContext;
写回答

1回答

bennyhuo

2021-08-30

没错,指针都需要自己手动处理内存开辟。具体用哪个看实际情况

1
1
gltzlike
嗯嗯,谢谢老师😁
2021-08-30
共1条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程