学过计算机组成原理应该不会对此有疑问。int小于等于数据线宽度,size_t大于等于地址线宽度。
size_t存在的最大原因可能是因为:地址线宽度历史中经常都是大于数据线宽度的。
在数据只有8位的年代,地址率先进入10位,12位,在数据16位的年代,地址也已经进入了20位,24位。
目前的int普遍是32位,而size_t在主流平台中都是64位。
size_t为什么存在?因为无论int还是unsigned都很可能小于size_t需要的大小,所以必须有个size_t。
--
补充:据说题主对_t有疑惑。
这个问题很简单,仅仅是因为作者选择这样的命名作为编码规范而已。类型名与变量名共享相同的命名空间,所以通常需要在命名方面刻意区分出来。
在遥远的 C 时代,发明者很可能是想建议所有的类型名后面加_t,只不过这并没有成为更普遍的编码规范罢了。而现今Java的规范倒比较容易让人接受:大写开头的是类型名,小写开头的是变量名跟函数名,虽然具体细则有不同,但原意都是一样的:变量与类型共享同一个命名空间,因而需要在命名规则上刻意区分开来。
作者:pansz
链接:https://www.zhihu.com/question/24773728/answer/210659978
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。