-
函数只定义了一次,调用了一次,为什么提示非法重定义?
在范围内没有声明就调用(可能是第一次调用在函数的定义之前) 的函数被认为返回整型(int) (且没有任何参数类型信息), 如...
-
问题:对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”, 它可否作为空指针或浮点零?具有“静态” 生存期...
-
第一种形式声明了一个“结构标签”;
第二种声明了一个“类型定义”。
主要的区别是在后文中你需要用&...
-
让客户使用指向没有公开定义(也许还隐藏在类型定义后边) 的结构类型的指 针是一个好办法。
只要不访问结构成员,
声明和使用“匿名&rd...
-
问题:我的编译器在结构中留下了空洞, 这导致空间浪费而且无法与外部 数据文件进行”二进制” 读写。能否关掉填充, 或者控制结构域的 对齐方式? 这...
-
只有很小的区别。
C 标准中允许枚举和其它整形类别自由混用而不会出错。
(但是, 假如编译器不允许在未经明确类型转换的情况下混用这些类型,则聪明 地使用枚举可以捕捉到某些程序错...
-
根据C 的内部类型转换规则, 乘法是用int 进行的, 而其结果可能在转换为 long 型并赋给左边的c 之前溢出或被截短。
可以使用明确的类型转换, 强迫乘法 以...
-
问题:
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。
为什么如下的代码((int *)p)++; 不行?在C语言中,
类型转换意味着“...
-
问题一:我能否用void** 指针作为参数, 使函数按引用接受一般指针?
不可移植。
C 中没有一般的指针的指针类型。
void* 可以用作一般指针只是因为当它和其它类型相互...
-
语言定义中说明,
每一种指针类型都有一个特殊值—— “空指针” —— 它与同类型的其它所有...
-
根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。
也就是说, 在初始化、赋值或比较的时候, 如果一边是指针类型的值或表达式, 编译器可以确定另一边的...
-
作为一种风格, 很多人不愿意在程序中到处出现未加修饰的0。
因此定义了预处理宏NULL (在<stdio.h> 和其它几个头文件中) 为空指针常数, 通...
-
问题:
如果NULL定义成#define NULL ((char *)0)
难道不就可以向函数传入不加转换的NULL 了吗?
一般情况下, 不行。
复杂之处在于, 有的机器...
-
问题:
如果NUL 和0作为空指针常数是等价的, 那我到底该用哪一个呢?许多程序员认为在所有的指针上下文中都应该使用NULL, 以表明该值应该被看作指...
-
随便使用术语“null” 或“NULL” 时, 可能意味着以下一种或几种含义:
1、概念上的空指针, 问题5.1 定义的抽象语言概...
-
C 程序员传统上喜欢知道很多(可能比他们需要知道的还要多) 关于机器实现的细节。
空指针在源码和大多数机器实现中都用零来表示的事实导致了很多无根据的猜测。
-
有两条简单规则你必须遵循:
1、当你在源码中需要空指针常数时, 用“0” 或“NULL”。
2、如果在函数调用中“0...
-
问题:
考虑到有关空指针的所有这些困惑,
难道把要求它们内部表达都必须为0 不是更简单吗?如果没有其它的原因, 这样做会是没脑筋的。
因为它会不必要地限制某些实现, 阻止它们...
-
真有机器用非零空指针?或者不同类型用不同的表达?
至少PL/I, Prime 50 系列用段07777, 偏移0 作为空指针。
后来的型号使用段0, 偏移0 作为C 的空指针,...
-
在C 语言中对数组和指针的困惑多数都来自这句话。
说数组和指针“等价”不表示它们相同, 甚至也不能互换。
它的意思是说数组和指针的算法定义可以用指针方便...