【第一个问题】
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是有定义的(函数的第一个参数)。