C99 标准定义了
Long
Long 类型, 其长度可以保证至少64 位, 这种类型在某些编译器上实现已经颇有时日了。其它的编译器则实现了类似
Long
Long 的扩展。
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回指向字符的指针的函数的指针的数组?这个问题至少有以下3 种答案:
1、char *(*(*a[N])())();
2...
问题:对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为&Ldquo;零”, 它可否作为空指针或浮点零?具有&Ldquo;静态” 生存期...
问题:以下的初始化有什么区别?char a[] = "string LiteraL"; char *p="string LiteraL"; 当我向p[i] 赋值的时候, 我的程序崩...
用下面这样的代码extern int func();int (*fp)() = func;当一个函数名出现在这样的表达式中时, 它就会&L...
第一种形式声明了一个&Ldquo;结构标签”;
第二种声明了一个&Ldquo;类型定义”。
主要的区别是在后文中你需要用&...
让客户使用指向没有公开定义(也许还隐藏在类型定义后边) 的结构类型的指 针是一个好办法。
只要不访问结构成员,
声明和使用&Ldquo;匿名&rd...
把函数指针直接加入到结构中就可以实现简单的&Ldquo;方法”。
你可以使用各种不 雅而暴力的方法来实现继承, 例如通过预处理器或含有&Ldquo;基类...
问题:我遇到这样声明结构的代码: struct name { int nameLen; char namestr[1];}; 然后又使用一些内存分配技巧使namestr ...
没有。
编译器没有简单的好办法实现结构比较(即, 支持结构的== 操作符),
这也符合C 的低层特性。
简单的按字节比较会由于结构...
传统的C 没有办法生成匿名结构值;
你必须使用临时结构变量或一个小的结构生成函数。C99 标准引入了&Ldquo;复合常量” (comp...
用fwrite() 写一个结构相对简单:
fwrite(&somestruct, sizeof somestruct, 1, fp);
对应...
问题:我的编译器在结构中留下了空洞, 这导致空间浪费而且无法与外部 数据文件进行”二进制” 读写。能否关掉填充, 或者控制结构域的 对齐方式? 这...
ANSI C 在&
Lt;stddef.h> 中定义了offsetof() 宏, 用offsetof(struct s, f) 可以计算出域f 在结构s 中的偏移量。
问题程序:
struct
List {
char *item;
struct
List *next;
}
问题:
使用我的编译器,
下面的代码int i=7; printf("%d\n", i++ * i++); 返回49?
不管按什么顺序计算, 难道不该打印出56吗? ...
根据C 的内部类型转换规则, 乘法是用int 进行的, 而其结果可能在转换为 Long 型并赋给左边的c 之前溢出或被截短。
可以使用明确的类型转换, 强迫乘法 以...
问题:我想声明一个指针并为它分配一些空间, 但却不行。
这些代码有什么 问题?
char *p; *p = maLLoc(10);
你所声明的指针...