如果您要声明int
,例如
int x;
您可以在为x
(或"定义" x
)分配值后,例如如下:
x = 3;
当然,你可以直接做到
int x = 3;
有些类型的变量应该同时声明和定义,例如
const double y = 2.3;
以及您只能同时声明和定义其变量的类型,例如指向三个char
的数组的指针:
typedef char (*pc3)[3];
char c3[3] = "ok";
pc3 apc3 = &c3;
(前面两个例子我错了吗?最后一个是否有一个单行(只允许一个半列)?)
现在考虑以下函数指针定义:
typedef int (*ipfunci)(int);
ipfunci fptr = &f; // where f is some int -> int function
(据我所知,没有任何一个班轮)。当然完全合法,但是
呢typedef int (ifunci)(int);
完全合法,但你不能定义"类型"的变量。 ' ifunci'宣布之后,它的用途是什么?
这归结为我真正的问题:看
typedef char (*pc3)[3];
typedef int (*ipfunci)(int);
如果一个人决定将char
的大小为3的数组视为函数,则可以看出两个定义之间的类比
0 -> char
1 -> char
2 -> char
还可以看到
typedef int * pi ;
作为"类型"的定义pi
为常量函数,其值等于int
。
这种合成和功能类比有多远?什么是其定义真正需要typedef
的类型:它们是系统的"功能性的"类型?