【Mark】顺序线性表的表基址-指针与数组的关系 19_12_7

顺序线性表的表基址(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型的二维数组


之前理解的有些偏差(已改正),并不是无限的,仍然需要分配数组大小
不过定义一个一级指针的确可以表示动态分配一个一维数组



发布了73 篇原创文章 · 获赞 162 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43763494/article/details/103439172