什么';c语言中这两个声明的区别是什么?
两者似乎对我做了相同的事情,什么';c语言中这两个声明的区别是什么?,c,syntax,C,Syntax,两者似乎对我做了相同的事情,typedef是做什么的?typedef将p定义为函数指针类型。第二个版本将P定义为函数指针 类型可用于声明变量。之后 typedef int (*P)(char *(*)()); int (*P)(char *(*)()); 你可以用 typedef int (*P)(char *(*)()); 这相当于 P p; 第一个声明了一个名为p的类型,您可以在声明其他变量时使用该类型。第二个声明了同一类型的变量 为了说明目的: int (*p)(char *(*)
typedef
是做什么的?typedef将p
定义为函数指针类型。第二个版本将P
定义为函数指针
类型可用于声明变量。之后
typedef int (*P)(char *(*)());
int (*P)(char *(*)());
你可以用
typedef int (*P)(char *(*)());
这相当于
P p;
第一个声明了一个名为p的类型,您可以在声明其他变量时使用该类型。第二个声明了同一类型的变量
为了说明目的:
int (*p)(char *(*)());
在本例中,变量
Q
和R
的类型完全相同。简单的答案是您正在通过typedef创建一个新的数据类型
让我们举一个简单的例子,在嵌入式系统中,我们只使用无符号数字。
现在我的第一条路是写作
typedef int (*P)(char *(*)());
int main() {
int (*Q)(char *(*)());
P R;
}
所以在这里,我必须在任何地方键入unsigned。。如果我忘记在某个地方键入unsigned,那么很难确定代码是否已发布。这么简单的方法就是
unsigned int xyz;
现在您可以使用uint作为数据类型。所以,每当解析器遇到uint时,它都会将其读取为unsigned int
因此,在您的示例中,可以在代码中使用p作为数据类型。就像第一个例子一样
typedef unsigned int uint;
将被解析为
P xyz ;
你着火了,伙计!945代表在4天+哈哈,谢谢。是 啊我可能应该,你知道,很快出去呼吸新鲜空气。这种新鲜空气被高估了:DSo是阳光和锻炼。。。我最不喜欢的两件事!
int (*xyz)(char *(*)());