1.1 我应该如何决定使用哪种整数类型?
1.2 为什么标准类型的尺寸没有精确定义?
1.3 由于 C 并没有精确定义尺寸,我一直在使用像int16和int32这样的 typedef。我可以根据我使用的机器,将这些 typedef 定义为int, short, long等等。这样应该可以解决所有问题,对吧?
1.4 在能够支持它的机器上,64 位类型应该是多少?
1.5 这个声明有什么问题?
char* p1, p2;当我尝试使用p2.
1.6 我正在尝试声明一个指针并为其分配一些空间,但它不起作用。这段代码有什么问题?
char *p; *p = malloc(10);
1.7 声明和定义全局变量和函数的最佳方法是什么?
1.8 我如何在 C 中实现不透明(抽象)数据类型?
1.9 我如何创建一个“半全局”变量,即一个对分散在几个源文件中的少数函数私有的变量?
1.10 同一个静态函数或变量的所有声明是否都必须包含存储类别?静态?
1.11extern是什么意思?
1.12auto关键字有什么用?
1.13 使用typedef和#define定义用户自定义类型有什么区别?
1.14 我似乎无法成功定义一个链表。我尝试了
typedef struct { char *item; NODEPTR next; } *NODEPTR;但编译器给出了错误消息。C 中的结构不能包含指向自身的指针吗?
1.15 我如何定义一对相互引用的结构?我尝试了
typedef struct { int afield; BPTR bpointer; } *APTR; typedef struct { int bfield; APTR apointer; } *BPTR;但编译器在第一个结构声明中使用BPTR时并不知道它。
1.16 这两个声明有什么区别?
struct x1 { ... }; typedef struct { ... } x2;
typedef int (*funcptr)();是什么意思?
1.18 我有声明
typedef char *charp; const charp p;为什么p变成const,而不是它指向的字符?
1.19 我不明白为什么不能在初始化列表和数组维度中使用const值,例如
const int n = 5; int a[n];
1.20 之间有什么区别?const char *p, char const *p,而char * const p?
函数参数const是什么意思?这两个const在
int f(const * const p)是什么意思?
1.21 中有什么用?我如何构造复杂类型的声明,例如“指向函数返回指向函数返回指向char的指针的 N 个指针的数组”,或者如何理解类似复杂的声明?
1.22 我如何声明一个可以返回指向相同类型函数的指针的函数?我正在构建一个状态机,每个状态有一个函数,每个函数返回指向下一个状态函数的指针。但我找不到声明这些函数的方法——我似乎需要一个返回指向函数的指针的函数,该函数又返回指向函数的指针,等等,无限循环。
1.23 我能否声明一个局部数组(或参数数组),其大小与传入的数组匹配,或者由另一个参数设置?
1.24 我有一个extern数组定义在一个文件中,并在另一个文件中使用
file1.c: file2.c: int array[] = {1, 2, 3}; extern int array[];为什么不sizeof在数组中file2.c?
1.25 我的编译器抱怨函数被无效地重新声明,但我只定义它一次并调用它一次。
1.25b 的正确声明是什么?main?
是void main()正确的吗?
1.26 我的编译器抱怨函数原型不匹配,而它们在我看来是正确的。
1.27 我在一个文件的第一个声明处遇到了奇怪的语法错误,但它看起来没问题。
1.28 我的编译器不允许我声明一个大的数组,例如
double array[256][256];
1.29 我如何确定哪些标识符可以使用,哪些是保留的?
1.30 我可以假设哪些关于未显式初始化的变量和数组的初始值?
如果全局变量最初为“零”,这对空指针和浮点零是否足够好?
1.31 这段直接来自书籍的代码无法编译
int f() { char a[] = "Hello, world!"; }
1.31b 这个初始化有什么问题?
char *p = malloc(10);我的编译器抱怨“无效的初始化列表”或类似的消息。
1.32 这些初始化之间有什么区别?
char a[] = "string literal"; char *p = "string literal";如果我尝试为p[i].
1.33 分配新值,我的程序就会崩溃。char a[3] = "abc";合法吗?
1.34 我终于弄明白了声明函数指针的语法,但现在如何初始化一个函数指针?
1.35 我可以初始化联合(union)吗?