C语言typedef问题

2024-12-29 17:47:29
推荐回答(1个)
回答1:

【第一个问题】

typedef 是用来给类型取别名的(注意:只是定义别名,不是定义变量)。例如:
struct Element {
char name[10];
int age;
};
typedef Element ElementType;
则以下两种定义变量的方法是完全等价的。
struct Element e;
ElementType e;

同样的也可以这样定义别名:
typedef Element *ElementPtr;
则以下三种定义变量的方法是完全等价的。
struct Element *p;
ElementType *p;
ElementPtr p;

另外,也可以像下面这样,在定义类型的同时,连别名也一起定义好了:
typedef struct Element {
char name[10];
int age;
} ElementType, *ElementPtr;

【第二个问题】

要注意,在C/C++中,“T[2]”这样的表达式,不一定是数组,也可能是指针!
如果T是指针,则T[2]等价于 *(T+2)。
你给的例子里,指针T是有定义的(函数的第一个参数)。