Tag: history

putc需要stdout,vs puts

C历史问题在这里。 为什么C函数putc需要第二个参数,如 putc( ‘c’, stdout ) ; 虽然看跌哦这么方便 puts( “a string” ) ; msvc ++中有一个函数 putchar( ‘c’ ) ; 这可能是人们期望putc工作的方式。 我认为putc的第二个参数是能够将putc定向到一个文件,但是有一个函数fputc 。

long和int的历史背景通常是相同的大小?

根据这里的众多答案 , long和int在C和C ++(Windows和Linux,32和64位)的通用平台上都是32位大小(我知道没有标准,但实际上,这些都是观察到的尺寸。) 所以我的问题是,这是怎么发生的? 为什么我们有两种尺寸相同的类型? 我以前总是假设大部分时间都是64位,而且是32位。我不是说“应该”是这样或那样的,我只是好奇我们是如何到达这里的。

malloc和calloc是如何以不同的签名结束的?

可能重复: 为什么calloc接受两个参数而malloc只有一个? 有很多资源描述了malloc和calloc之间的function差异,但是我不能轻易找到描述不同function签名背后的历史的资源: void *calloc(size_t nmemb, size_t size); void *malloc(size_t size); 当然,前者的大小是每个成员的大小。 也许这个想法是可以通过操作系统懒惰地完成多页面大小的成员大小的calloc? (我可以弥补原因以及下一个人 – 没有引用来源没有接受的答案。:-)