What does typedef int var[1]; do?

What does typedef int var[1]; do?

本文关键字:do does typedef int var What      更新时间:2023-10-16

我遇到了以下代码:

typedef int var[1]; // or var[3]

它到底做什么?我不明白下标添加了什么,因为现在我可以为int 定义"var"

typedef声明使用与普通变量声明相同的语法。不同之处在于,您没有声明"y类型的名为x的变量",而是声明了"x类型,它是y类型的同义词"。

因此,让我们从您的示例中删除typedef,看看我们得到了什么:

int var[1];

var是一个类型为int[1]的变量,或者是一个int的数组。如果我们将typedef添加回:

typedef int var[1];

这使得CCD_ 11成为类型CCD_。

同样适用于其他类型的丑陋或复杂类型:

int (*fp)(int);         // fp is a function pointer variable
typedef int (*fp)(int); // fp is a function pointer type

您可以通过使用声明为的identity模板来避免这种混乱

template <typename T> struct identity { typedef T type; };

使用此模板,复杂类型或变量声明的含义将更加清晰。例如,我们可以这样声明我们的类型:

typedef identity<int[1]     >::type var; // array type
typedef identity<int(*)(int)>::type fp;  // function pointer type

由于变量声明使用与类型声明相同的语法,我们也可以使用identity来声明具有复杂性的变量:

identity<int[1]     >::type var; // array variable
identity<int(*)(int)>::type fp;  // function pointer variable

var是大小为1的int数组的类型定义。

你可以写

var x;

并且CCD_ 17将是类型为CCD_