数据结构与算法

typedef 定义数组类型用法

看到一条typedef语句,不明白其意义

1
typedef Point		devs_t[LOOP_MAX][DEVS_MAX];
1
2
3
4
5
6
7
typedef int 	arrs[5];
typedef arrs * p_arr5;
typedef p_arr5 arrp10[10];
arrs togs; // togs是具有5个元素的int数组
p_arr5 p2; // p2是一个指针,指向具有元素的数组
arrp10 ap; // ap是具有十个元素的指针数组,每个指针指向具有5个元素的int数组

1
2
typedef Point		devs_t[LOOP_MAX][DEVS_MAX];
dev_t dev; //dev是一个二位数组 数据类型是point,有LOOP_MAX * DEVS_MAX 个Point数组元素

写成函数格式,需要注意的是,当成为形参的时候,是一个指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define LOOP_MAX 	10
#define DEVS_MAX 10
typedef int devs_t[LOOP_MAX][DEVS_MAX];
dev_t dev; //dev是一个二位数组 数据类型是int,有LOOP_MAX * DEVS_MAX 个int数组元素

void test(devs_t dev) //这里的dev是一个指针
{
//在这里修改dev的值,会修改全局变量dev的值
}

void main()
{
test(dev); //这里的test dev是一个指针,指向全部变量 dev,这里执行的不是拷贝,而是指针的指向
}