最近写c写的比较多,和int聊了聊,总结一下我对于c语言的一些理解
我对于c语言所有变量类型的理解,那就是c语言只有四大类变量类型
- 指针(任何
*
,再加上size_t
) - 任何单个数据类型(例如
uint64_t
,int8_t
,char
,unsigned char
,bool
) - 数据集合,即结构体
- void
指针
aaa
指针根据计算机是64位还是32位在特殊情况下可以和uint64_t
或uint32_t
等64或32长度数据进行转换
另外,把size_t
归到指针类的原因是size_t
的长度与指针长度相绑定,或者说与计算机位数相绑定
但是
size_t
本身并不具备指针的其他属性,仅仅是长度相绑定而已
单个数据类型
这里我统一用两个东西在内部区分
- bit
- 正负性
例如uint64_t
,我只需要记住他有64bit,并且不具有正负性
再比如char
,我只需要知道他有8bit,并且具有正负性
这么看来,与char
类似的有uint8_t
,同样有8bit,并且具有正负性
与char
相对的则有unsigned char
,uint8_t
这样一来,所有单个数据类型(除指针和void外,都可以很简单地被归到这个体系)
顺带一提,其实指针也可以统一到size_t
,放到单一数据类型这里,但是指针对于c太特殊了,所以单开一类
数据集合
这里就很多了,由单个数据类型和指针构成的结构体可以组合成任意的数据结构,像是链表数组
void
这就没啥好说的了,单纯的一个无类型的类型
总结
以上就是我对c语言类型的一些理解,有了这种理解之后看python这样的语言反而会觉得很容易困惑