最近写c写的比较多,和int聊了聊,总结一下我对于c语言的一些理解

我对于c语言所有变量类型的理解,那就是c语言只有四大类变量类型

  • 指针(任何*,再加上size_t)
  • 任何单个数据类型(例如uint64_tint8_tcharunsigned charbool)
  • 数据集合,即结构体
  • void

指针

aaa

指针根据计算机是64位还是32位在特殊情况下可以和uint64_tuint32_t等64或32长度数据进行转换
另外,把size_t归到指针类的原因是size_t的长度与指针长度相绑定,或者说与计算机位数相绑定

但是size_t本身并不具备指针的其他属性,仅仅是长度相绑定而已

单个数据类型

这里我统一用两个东西在内部区分

  1. bit
  2. 正负性

例如uint64_t,我只需要记住他有64bit,并且不具有正负性

再比如char,我只需要知道他有8bit,并且具有正负性
这么看来,与char类似的有uint8_t,同样有8bit,并且具有正负性
char相对的则有unsigned charuint8_t

这样一来,所有单个数据类型(除指针和void外,都可以很简单地被归到这个体系)
顺带一提,其实指针也可以统一到size_t,放到单一数据类型这里,但是指针对于c太特殊了,所以单开一类

数据集合

这里就很多了,由单个数据类型和指针构成的结构体可以组合成任意的数据结构,像是链表数组

void

这就没啥好说的了,单纯的一个无类型的类型

总结

以上就是我对c语言类型的一些理解,有了这种理解之后看python这样的语言反而会觉得很容易困惑