Ruby 入坑 c 语言遇到的一点点小问题

jay_chou · 2022年01月03日 · 最后由 nikoloss 回复于 2022年01月09日 · 415 次阅读

最近在学习 c 语言,发现函数定义要么返回一个确定的类型,要么不返回值,那么我想知道如果我一个函数返回的类型不确定,该怎么处理?我可能返回一个用 struct 定义的结构体,也有可能返回一个数字类型,那么我函数的类型定义该怎么写?

1 楼 已删除

返回 union 类型能解决你的需求吗?我对 c 语言不熟,抛砖引玉一下,在别的支持类型的语言里,是可以声明某个値属于几个类型中的一个的。比如

  1. union
  2. struct
  3. 全局变量,在函数内部改动该值,在函数外检查该值

我也抛砖引玉,等其他人补充

我个人认为,使用 C 等静态类型语言时,应当把平常写 Ruby 的这种动态类型思维扭过来,应当确保:一个函数只返回一个确定的类型。

xinyifly 回复

我一开始也是在想能不能用联合类型 但是在研究 c 的时候找不到类似于联合类型的功能

C 里面一个类型的内存结构是固定的。所以你只能通过返回结构体带成员变量 int tag 的方式来判断这个结构体的类型,然后把每种可能的值都存在里面。union 不过是为了节省一部分内存。

传入变量地址,函数内部修改

用 void* 呗

需要 登录 后方可回复, 如果你还没有账号请 注册新账号