C声明语法相当复杂......
这让我想到了关于转换语法的问题,
简单类型很简单,只需将类型放在括号中即可。 但是如何类型,
int (*2Dap) [5];
或double (*fp) (double, double);
我在这里猜测,规则是剥去正常变量声明的标识符(加分号)并将其放在括号中。
因此,int (*2Dap) [5];
变为( int (*) [5] )
而char * str;
变为(char *)
这是一般规则吗?
正如typedef
那样,您的新“类型”将是typedef
声明中的“变量”,
例如。 typedef double (*twoINoneOUT) (double, double);
“twoInoneOUT”将是您的新“类型”。
正确?
只是想澄清一下。我知道我甚至不太可能需要这些 - 这可以让我免于不必要地输入defde。
答案 0 :(得分:2)
我在这里猜测,规则是剥离标识符(加上 正常变量声明的分号并将其放入 括号中。
右。这声明了一个名为x
的变量:
int (*x)[5];
变量的类型为int (*)[5]
,您可以使用强制转换(int (*)[5])
强制转换为该类型。
如此typedef,你的新“类型”将是你的“变量” 你的typedef声明,
也正确。这声明了一个名为t
的类型别名:
typedef int (*t)[5];
从语法上讲,typedef
与static
等存储类说明符位于同一位置。
答案 1 :(得分:0)