关于变量声明和c ++

时间:2016-10-16 21:12:54

标签: c++ typedef declaration

如果您要声明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的类型:它们是系统的"功能性的"类型?

0 个答案:

没有答案