# 类型定义

可以用类型定义来建立新的数据类型名。

```c
#include <stdio.h>

typedef int integer;
typedef char *string;

int main(int argc, char const *argv[])
{
	integer i = 233;
	printf("%d\n", i);
	string str = "Hello World!";
	printf("%s\n", str);
	return 0;
}
```

也可以与结构定义结合使用。

```c
#include <stdio.h>
#include <stdlib.h>

struct node
{
	int data;
	struct node *left;
	struct node *right;
};

typedef struct node n;

int main(int argc, char const *argv[])
{
	n *rootNode = (n *)malloc(sizeof(n));
	n *leftNode = (n *)malloc(sizeof(n));
	n *rightNode = (n *)malloc(sizeof(n));
	rootNode->data = 1;
	rootNode->left = leftNode;
	rootNode->right = rightNode;
	leftNode->data = 2;
	leftNode->left = NULL;
	leftNode->right = NULL;
	rightNode->data = 3;
	rightNode->left = NULL;
	rightNode->right = NULL;
	printf("root: %d.\n", rootNode->data);
	printf("left: %d.\n", rootNode->left->data);
	printf("right: %d.\n", rootNode->right->data);
	free(rootNode);
	free(leftNode);
	free(rightNode);
	return 0;
}
```

