点击目录传送ฅʕ•̫͡•ʔฅ
顺序线性表的表基址(ElemType * elem)
- 指的是动态分配一个数组
- 假设
typedef int ElemType
,即int * elem
- 那么这个
elem
就是一个int
型数组的名字
为了让用户更方便获取一维数组的起始地址,编译器在定义数组分配存储空间时,就已经在内存中自动创建了一个存储空间,用来存储数组的起始地址,通过使用一维数组的数组名来访问该地址值
即,int * book
等价于 int book[无穷]
(理论上,实际上仍需要动态分配数组大小)
#include<iostream>
#include<cstdlib>
using namespace std;
typedef int * arr; //动态分配数组
#define INIT_SIZE 100
int main()
{
arr book;
book = (arr)malloc(INIT_SIZE * sizeof(int));
for(int i = 0; i < 99; i++){
book[i] = i;
cout << book[i] << " ";
}
cout << endl;
cout << "book[97] " << book[97] << endl;
cin >> book[97];
cout << "book[97] " << book[97] << endl;
cin >> book[100];
cout << "book[100] " << book[100] << endl;
return 0;
}
借此理解了表基址就行了吧(。^▽^)
也就是说,一级指针可以表示一维数组,二级指针可以表示二维数组,以此类推
哈夫曼树里的typedef char * * HuffmanCode
就是动态分配一个char型的二维数组
之前理解的有些偏差(已改正),并不是无限的,仍然需要分配数组大小
不过定义一个一级指针的确可以表示动态分配一个一维数组