C 程序员传统上喜欢知道很多(可能比他们需要知道的还要多) 关于机器实现的细节。
空指针在源码和大多数机器实现中都用零来表示的事实导致了很多无根据的猜测。
数组自动分配空间, 但是不能重分配或改变大小。
指针必须明确赋值以指向分配的空间(可能使用MAlloc), 但是可以随意重新赋值(即, 指向不同的对象), 同时除了表示一个内存块...
传统的解决方案是分配一个指针数组,
然后把每个指针初始化为动态分配的“列”。
以下为一个二维的例子:
#include <stdlib.h>...
问题:为什么这段代码不行?
char *answer;
printf("Type something:\n");
gets(answer);
printf("You typ...
我的strcat() 不行.
我试了char *s1 = "Hello, "; char *s2 ="world!"; char *s3 = strcat(s1, s2);
但...
问题:
为什么有些代码小心地把MAlloc 返回的值转换为分配的指针类型。在ANSI/ISO 标准C 引入void * 一般指针类型之前,
这种类型转换通常用于在不兼容指针类型...
问题:
我的程序总是崩溃, 显然在MAlloc 内部的某个地方。
但是我看不出哪里有问题。
是MAlloc() 有bug 吗?很不幸, MAlloc 的内部数据结构很容易被破...
是的。
有些早期的MAlloc() 文档提到释放的内存中的内容会“保留”,
但这个欠考虑的保证并不普遍而且也不是C 标准要求的。
几乎没有那个程序员会...
字符和字符串的区别显而易见, 而strcat() 用于连接字符串。
C 中的字符用它们的字符集值对应的小整数表示, 参见下边的问题8.4。
字符串用...
我在检查一个字符串是否跟某个值匹配。
为什么这样不行?
char *string;
. . .
if(s...
在C语言中字符用它们的字符集值对应的小整数表示。
因此, 你不需要任何转换函数:
如果你有字符, 你就有它的值。
数字字符和它们对...
对于这个问题没有什么好的答案。
如果这两个值是整数, 可以使用异或的技术, 但是这对浮点值或指针却不行, 对同一个值也无能为力。
(参见问题3.4和...
通常的目标是书写一个象包含一个单独的函数调用语句的宏。
这意味着“调用者”需要提供最终的分号, 而宏体则不需要。
因此宏体不能为简单的括弧包围的复合语句...
这是个风格问题, 因此有不少的争论。
很多人认为“嵌套包含文件”应该避免:
盛名远播的“印第安山风格指南”(Indian Hil...
根据“缺少的” 头文件的种类, 有几种情况。
如果缺少的头文件是标准头文件, 那么你的编译器有问题。
你得向你的供货商或者精通你的编译器的人求助。
对...