今天来聊聊C语言 | 每日基础(45)

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:我怎么得到对应字符的数字 (字符集) 值, 或者相反?

阿一:在 C 语言中字符用它们的字符集值对应的小整数表示。因此, 你不需要任何 转换函数: 如有你有字符, 你就有它的值。数字字符和它们对应的 0-9 的数字之间相互转换时, 加上或减去常数 ’0’, 也就 是说, ’0’ 的字符值。

读者:我认为我的编译器有问题: 我注意到 sizeof(’a’) 是 2 而不是 1 (即, 不是 sizeof(char))。

阿一:可能有些令人吃惊, C语言中的字符常数是int型, 因此sizeof(’a’)是sizeof(int), 这是另一个与 C++ 不同的地方。

读者:realloc() 的第一个参数传入空指针合法吗?你为什么要这样 做?

阿一:ANSI C 批准了这种用法, 以及相关的 realloc(…, 0), 用于释放, 尽管一些早 期的实现不支持, 因此可能不完全可移植。向 realloc() 传入置空的指针可以更容 易地写出自开始的递增分配算法。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

正文完