-
作为一种风格, 很多人不愿意在程序中到处出现未加修饰的0。PAn>
因此定义了预处理宏NULL (在<stdio.h> 和其它几个头文件中) 为空指针常数, 通...
-
在使用非全零作为空指针内部表达的机器上,NULL是如何定义的
跟其它机器一样: 定义为0 (或某种形式的0; 参见问题5.4)。PAn>
当程序员请求一个空指针时, 无论...
-
问题:PAn>
如果NUL 和0作为空指针常数是等价的, 那我到底该用哪一个呢?PAn>许多程序员认为在所有的指针上下文中都应该使用NULL, 以表明该值应该被看作指...
-
C 程序员传统上喜欢知道很多(可能比他们需要知道的还要多) 关于机器实现的细节。PAn>
空指针在源码和大多数机器实现中都用零来表示的事实导致了很多无根据的猜测。PA...
-
当你调用free() 的时候, 传入指针指向的内存被释放, PAn>
但调用函数的指针值可能保持不变, PAn>
因为C的按值传参语义意味着被调函数永远不会永久改变...
-
在调用alloca() 的函数返回的时候, 它分配的内存会自动释放。PAn>
也就是说, 用alloca 分配的内存在某种程度上局部于函数的“堆栈帧&rdquo...
-
字符和字符串的区别显而易见, 而strcat() 用于连接字符串。PAn>
C 中的字符用它们的字符集值对应的小整数表示, 参见下边的问题8.4。PAn>
字符串用...
-
我在检查一个字符串是否跟某个值匹配。PAn>
为什么这样不行?PAn>
char *string;PAn>
. . .PAn>
if(s...
-
在C语言中字符用它们的字符集值对应的小整数表示。PAn>
因此, 你不需要任何转换函数: PAn>
如果你有字符, 你就有它的值。PAn>
数字字符和它们对...
-
对于这个问题没有什么好的答案。PAn>
如果这两个值是整数, 可以使用异或的技术, 但是这对浮点值或指针却不行, 对同一个值也无能为力。PAn>
(参见问题3.4和...
-
尽管这是种常见的需求, 但却没有什么标准的办法。PAn>
gcc 提供了和-E 一起使用的-dM 选项, 其它编译器也有类似的选项。PAn>
如果编译器文档没有帮助...
-
C 的预处理器并不是一个全能的工具。PAn>
注意, 甚至都不能保证有一个单独的程序。PAn>
与其强迫它做一些不适当的事情, 还不如考虑自己写一个专用的预处理工具...
-
你可以向接受const-T 的指针的地方传入T 的指针(任何类型T都适用)。PAn>
但是, PAn>
这个允许在带修饰的指针类型上轻微不匹配的规则(明显的例外)却...
-
有两个程序protoize 和unprotoize 可以在有原型和无原型的函数定义和声明之间相互转换。PAn>
这些程序不能完全完成“经典” C 和...
-
某些构造随编译器和硬件的实现而变化, 这一直是C语言的一个特点。PAn>
这种有意的不严格规定可以让编译器生成效率更高的代码, 而不必让所有程序为了不合理的情况承担额外的负...
-
第一, 保存getchar的返回值的变量必须是int型。PAn>
getchar() 可能返回任何字符值, 包括EOF。PAn>
如果把getchar 的返回值截为...
-
直接的方法是PAn>rand() % N /* 不好*/PAn>试图返回从0 到N ¡ 1 的数字。PAn>
但这个方法不好, 因为许多随机数发生器...
-
如果问题并不是那么简单, 那么回想一下, 电脑一般都是用一种浮点的格式来近似的模拟实数的运算, 注意是近似, 不是完全。PAn>
下溢、误差的累积和其它非常规性是常遇到的麻...
-
为了把printf() 的正确原型说明引入作用域。PAn>对于用可变参数的函数, 编译器可能用不同的调用次序。PAn>
例如, 如果可变参数的调用比固定参数的调用效率...
-
这一段信息不可移植。PAn>
一些旧系统提供一个非标准函数nargs()。PAn>
然而它的可信度值得怀疑, 因为它的典型返回值是参数的字节长度, 而不是参数的个数...