-
没有完美的方法。
假设有如下声明
int array[NROWS][NCOLUMNS];
int **array1; /* 不齐的*/
int **array2; /* 连...
-
问题:为什么这段代码不行?
char *answer;
printf("Type something:\n");
gets(answer);
printf("You typ...
-
我的strcat() 不行.
我试了char *s1 = "Hello, "; char *s2 ="world!"; char *s3 = strcat(s1, s2);
但...
-
我有个函数, 本该返回一个字符串, 但当它返回调用者的时候, 返回串却是垃圾信息。
确保指向的内存已经正确分配了。
例如, 确保你没有做下面这样的事情:
char *itoa...
-
问题:
为什么有些代码小心地把malloc 返回的值转换为分配的指针类型。在ANSI/ISO 标准C 引入void * 一般指针类型之前,
这种类型转换通常用于在不兼容指针类型...
-
当你调用free() 的时候, 传入指针指向的内存被释放,
但调用函数的指针值可能保持不变,
因为C的按值传参语义意味着被调函数永远不会永久改变...
-
在调用alloca() 的函数返回的时候, 它分配的内存会自动释放。
也就是说, 用alloca 分配的内存在某种程度上局部于函数的“堆栈帧&rdquo...
-
我在检查一个字符串是否跟某个值匹配。
为什么这样不行?
char *string;
. . .
if(s...
-
问题:
因为在C 语言中所有的非零值都被看作“真”, 是不是把TRUE 定义为1 很危险?
如果某个内置的函数或关系操作符“返回&rdquo...
-
对于这个问题没有什么好的答案。
如果这两个值是整数, 可以使用异或的技术, 但是这对浮点值或指针却不行, 对同一个值也无能为力。
(参见问题3.4和...
-
通常的目标是书写一个象包含一个单独的函数调用语句的宏。
这意味着“调用者”需要提供最终的分号, 而宏体则不需要。
因此宏体不能为简单的括弧包围的复合语句...
-
这是个风格问题, 因此有不少的争论。
很多人认为“嵌套包含文件”应该避免:
盛名远播的“印第安山风格指南”(Indian Hil...
-
根据“缺少的” 头文件的种类, 有几种情况。
如果缺少的头文件是标准头文件, 那么你的编译器有问题。
你得向你的供货商或者精通你的编译器的人求助。
对...
-
尽管这是种常见的需求, 但却没有什么标准的办法。
gcc 提供了和-E 一起使用的-dM 选项, 其它编译器也有类似的选项。
如果编译器文档没有帮助...
-
C 的预处理器并不是一个全能的工具。
注意, 甚至都不能保证有一个单独的程序。
与其强迫它做一些不适当的事情, 还不如考虑自己写一个专用的预处理工具...
-
一种流行的技巧是用一个单独的用括弧括起来的的“参数” 定义和调用宏,
参数在宏扩展的时候成为类似printf() 那样的函数的...
-
问题:
很多ANSI 编译器在遇到以下代码时都会警告类型不匹配。
extern int func(float); int func(x) float x; { . . .
你...
-
你可以向接受const-T 的指针的地方传入T 的指针(任何类型T都适用)。
但是,
这个允许在带修饰的指针类型上轻微不匹配的规则(明显的例外)却...
-
不能。
main() 必须声明为返回int, 且没有参数或者接受适当类型的两个参数。
如果你调用了exit()但还是有警告信息, 你可能需要插入一条冗余的return语句
(...
-
有些ANSI 前的编译器/预处理器把下面这样的宏
#define TRACE(var, fmt) printf("TRACE: var = fmt\n", var)
解释为
...