-
通常, 你不需要。
当人们随便提到数组指针的时候, 他们通常想的是指向它的第一个元素的指针。
考虑使用指向数组某个元素的指针, 而不是数组的指针。
类型T 的数组蜕变成类型T...
-
传统的解决方案是分配一个指针数组,
然后把每个指针初始化为动态分配的“列”。
以下为一个二维的例子:
#include <stdlib.h>...
-
现象:当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了。
数组蜕化为指针的规则(参见问题6.3) 不能递归应用。
数组的数组(即C 语言中的二维数组) 蜕化为数...
-
这并非易事。
一种办法是传入指向[0][0] 成员的的指针和两个维数, 然后“手 工” 模拟数组下标。
void f2(iNT *aryp, iNT n...
-
没有完美的方法。
假设有如下声明
iNT array[NROWS][NCOLUMNS];
iNT **array1; /* 不齐的*/
iNT **array2; /* 连...
-
问题:为什么这段代码不行?
char *answer;
priNTf("Type something:\n");
gets(answer);
priNTf("You typ...
-
我有个函数, 本该返回一个字符串, 但当它返回调用者的时候, 返回串却是垃圾信息。
确保指向的内存已经正确分配了。
例如, 确保你没有做下面这样的事情:
char *itoa...
-
通常的目标是书写一个象包含一个单独的函数调用语句的宏。
这意味着“调用者”需要提供最终的分号, 而宏体则不需要。
因此宏体不能为简单的括弧包围的复合语句...
-
一种流行的技巧是用一个单独的用括弧括起来的的“参数” 定义和调用宏,
参数在宏扩展的时候成为类似priNTf() 那样的函数的...
-
问题:
很多ANSI 编译器在遇到以下代码时都会警告类型不匹配。
extern iNT func(float); iNT func(x) float x; { . . .
你...
-
不能。
main() 必须声明为返回iNT, 且没有参数或者接受适当类型的两个参数。
如果你调用了exit()但还是有警告信息, 你可能需要插入一条冗余的return语句
(...
-
有些ANSI 前的编译器/预处理器把下面这样的宏
#define TRACE(var, fmt) priNTf("TRACE: var = fmt\n", var)
解释为
...
-
有两个程序protoize 和unprotoize 可以在有原型和无原型的函数定义和声明之间相互转换。
这些程序不能完全完成“经典” C 和...
-
第一, 保存getchar的返回值的变量必须是iNT型。
getchar() 可能返回任何字符值, 包括EOF。
如果把getchar 的返回值截为...
-
strncpy() 最初被设计为用来处理一种现在已经废弃的数据结构——定长, 不 必’n0’ 结束的“字符串&rdquo...
-
确保你知道经典的正则表达式和文件名通配符的不同。
前者的变体在Unix工具ed 和grep 等中使用, 后者的变体在多数操作系统中使用。
有许多匹配正则表达式的包可以利用。
...
-
问题:我想用strcmp() 作为比较函数, 调用qsort() 对一个字符串数组排序, 但是不行。你说的“字符串数组” 实际上是“字符指针数组...
-
问题:
我想用qsort() 对一个结构数组排序。
我的比较函数接受结构指针,但是编译器认为这个函数对于qsort() 是错误类型。
我要怎样转换这个函数指针才能避免这样的警...
-
只要使用函数time(), ctime(), localtime() 和/或strftime() 就可以了。
下面是个简单的例子:
#include <stdio.h&g...
-
ANSI/ISO 标准C 函数mktime() 和difftime() 对这两个问题提供了一些有限的支持。
mktime() 接受没有规格化的日期, 所以可以用一个日期的stru...