C 程序员传统上喜欢知道很多(可能比他们需要知道的还要多) 关于机器实现的细节。AN>
空指针在源码和大多数机器实现中都用零来表示的事实导致了很多无根据的猜测。
这并非易事。
一种办法是传入指向[0][0] 成员的的指针和两个维数, 然后“手 工” 模拟数组下标。
void f2(int *aryp, int n...
问题:为什么这段代码不行?
char *ANswer;
printf("Type something:\n");
gets(ANswer);
printf("You typ...
一般地说, 使用指针的时候, 你必须总是考虑内存分配, 除非明确知道编译器替你做了此事。
如果一个库函数的文档没有明确提到内存分配, 那么通常需要调用者来考虑。Unix 型的手册...
问题:
为什么有些代码小心地把malloc 返回的值转换为分配的指针类型。在ANSI/ISO 标准C 引入void * 一般指针类型之前,
这种类型转换通常用于在不兼容指针类型...
当你调用free() 的时候, 传入指针指向的内存被释放, AN>
但调用函数的指针值可能保持不变, AN>
因为C的按值传参语义意味着被调函数永远不会永久改变...
在调用alloca() 的函数返回的时候, 它分配的内存会自动释放。AN>
也就是说, 用alloca 分配的内存在某种程度上局部于函数的“堆栈帧&rdquo...
字符和字符串的区别显而易见, 而strcat() 用于连接字符串。AN>
C 中的字符用它们的字符集值对应的小整数表示, 参见下边的问题8.4。AN>
字符串用...
我在检查一个字符串是否跟某个值匹配。AN>
为什么这样不行?AN>
char *string;AN>
. . .AN>
if(s...
在C语言中字符用它们的字符集值对应的小整数表示。AN>
因此, 你不需要任何转换函数: AN>
如果你有字符, 你就有它的值。AN>
数字字符和它们对...
对于这个问题没有什么好的答案。AN>
如果这两个值是整数, 可以使用异或的技术, 但是这对浮点值或指针却不行, 对同一个值也无能为力。AN>
(参见问题3.4和...
这是个风格问题, 因此有不少的争论。
很多人认为“嵌套包含文件”应该避免:
盛名远播的“印第安山风格指南”(IndiAN Hil...
尽管这是种常见的需求, 但却没有什么标准的办法。AN>
gcc 提供了和-E 一起使用的-dM 选项, 其它编译器也有类似的选项。AN>
如果编译器文档没有帮助...
C 的预处理器并不是一个全能的工具。AN>
注意, 甚至都不能保证有一个单独的程序。AN>
与其强迫它做一些不适当的事情, 还不如考虑自己写一个专用的预处理工具...
1983 年, 美国国家标准协会(ANSI) 委任一个委员会X3J11 对C 语言进行标准化。
经过长期艰苦的过程, 该委员会的工作于1989 年12 月14 日正式被批准为AN...
问题:
很多ANSI 编译器在遇到以下代码时都会警告类型不匹配。
extern int func(float); int func(x) float x; { . . .
你...
你可以向接受const-T 的指针的地方传入T 的指针(任何类型T都适用)。AN>
但是, AN>
这个允许在带修饰的指针类型上轻微不匹配的规则(明显的例外)却...