-
问题:
使用我的编译器,
下面的代码int i=7; printf("%d\n", i++ * i++); 返回49?
不管按什么顺序计算, 难道不该打印出56吗? ...
-
根据C 的内部类型转换规则, 乘法是用int 进行的, 而其结果可能在转换为 long 型并赋给左边的c 之前溢出或被截短。
可以使用明确的类型转换, 强迫乘法 以...
-
问题:
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。
为什么如下的代码((int *)p)++; 不行?在C语言中,
类型转换意味着“...
-
问题:
我有个函数,
它应该接受并初始化一个指针void f(int *ip) { static int dummy = 5; ip = &...
-
问题一:我能否用void** 指针作为参数, 使函数按引用接受一般指针?
不可移植。
C 中没有一般的指针的指针类型。
void* 可以用作一般指针只是因为当它和其它类型相互...
-
最初,
一个函数指针必须用* 操作符(和一对额外的括弧) “转换为” 一个“真正的” 函数才能调用:...
-
随便使用术语“null” 或“NULL” 时, 可能意味着以下一种或几种含义:
1、概念上的空指针, 问题5.1 定义的抽象语言概...
-
问题:
考虑到有关空指针的所有这些困惑,
难道把要求它们内部表达都必须为0 不是更简单吗?如果没有其它的原因, 这样做会是没脑筋的。
因为它会不必要地限制某些实现, 阻止它们...
-
真有机器用非零空指针?或者不同类型用不同的表达?
至少PL/I, Prime 50 系列用段07777, 偏移0 作为空指针。
后来的型号使用段0, 偏移0 作为C 的空指针,...
-
通常, 你不需要。
当人们随便提到数组指针的时候, 他们通常想的是指向它的第一个元素的指针。
考虑使用指向数组某个元素的指针, 而不是数组的指针。
类型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语句
(...