-
1. 什么是空指针常量(null pointer constant)?
[6.3.2.3-3] An integer constant expression with the v...
-
在C语言中,函数的参数不仅可以是整数、小数、字符等具体的数据,还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,...
-
唉, 在C 里没有一个标准且可移植的方法。在标准中跟本就没有提及屏幕和键盘的概念, 只有基于字符“流” 的简单输入输出。在某个级别, 与键盘的...
-
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回指向字符的指针的函数的指针的数组?这个问题至少有以下3 种答案:
1、char *(*(*a[N])())();
2...
-
只有很小的区别。
C 标准中允许枚举和其它整形类别自由混用而不会出错。
(但是, 假如编译器不允许在未经明确类型转换的情况下混用这些类型,则聪明 地使用枚举可以捕捉到某些程序错...
-
根据C 的内部类型转换规则, 乘法是用int 进行的, 而其结果可能在转换为 long 型并赋给左边的c 之前溢出或被截短。
可以使用明确的类型转换, 强迫乘法 以...
-
问题:
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。
为什么如下的代码((int *)p)++; 不行?在C语言中,
类型转换意味着“...
-
问题一:我能否用void** 指针作为参数, 使函数按引用接受一般指针?
不可移植。
C 中没有一般的指针的指针类型。
void* 可以用作一般指针只是因为当它和其它类型相互...
-
最初,
一个函数指针必须用* 操作符(和一对额外的括弧) “转换为” 一个“真正的” 函数才能调用:...
-
根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。
也就是说, 在初始化、赋值或比较的时候, 如果一边是指针类型的值或表达式, 编译器可以确定另一边的...
-
问题:
用缩写的指针比较“if(p)” 检查空指针是否可靠?
如果空指针的内部表达不是0 会怎么样?
当C 在表达式中要求布尔值时, 如果表达式等于0...
-
作为一种风格, 很多人不愿意在程序中到处出现未加修饰的0。
因此定义了预处理宏NULL (在<stdio.h> 和其它几个头文件中) 为空指针常数, 通...
-
问题:
如果NULL定义成#define NULL ((char *)0)
难道不就可以向函数传入不加转换的NULL 了吗?
一般情况下, 不行。
复杂之处在于, 有的机器...
-
有两条简单规则你必须遵循:
1、当你在源码中需要空指针常数时, 用“0” 或“NULL”。
2、如果在函数调用中“0...
-
问题:
考虑到有关空指针的所有这些困惑,
难道把要求它们内部表达都必须为0 不是更简单吗?如果没有其它的原因, 这样做会是没脑筋的。
因为它会不必要地限制某些实现, 阻止它们...
-
在C 语言中对数组和指针的困惑多数都来自这句话。
说数组和指针“等价”不表示它们相同, 甚至也不能互换。
它的意思是说数组和指针的算法定义可以用指针方便...
-
这是一种便利。
由于数组会马上蜕变为指针, 数组事实上从来没有传入过函数。
允许指针参数声明为数组只不过是为让它看起来好像传入了数组, 因为该参数可能在函数内当作数组使用。
...
-
数组自动分配空间, 但是不能重分配或改变大小。
指针必须明确赋值以指向分配的空间(可能使用malloc), 但是可以随意重新赋值(即, 指向不同的对象), 同时除了表示一个内存块...
-
现象:当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了。
数组蜕化为指针的规则(参见问题6.3) 不能递归应用。
数组的数组(即C 语言中的二维数组) 蜕化为数...
-
没有完美的方法。
假设有如下声明
int array[NROWS][NCOLUMNS];
int **array1; /* 不齐的*/
int **array2; /* 连...