最近在学习数据结构,学习到栈结构,遂打算以二维数组实现栈结构。由于在此之前我并没有实际在函数中操作二维数组,所以此次的写代码颇为曲折,当然最终还是有所收获的。
二维数组本质上也是数组,所以在c的函数中对二维数组进行操作依旧是对普通数组的操作。
首先我们需要有对这个二维数组的初始化函数InitStack
,参数为char ** stack
。
此时出现一个问题,我需要对指针使用malloc
分配堆内存,即使我传入的是一个指针,但是依旧无法分配内存,
1 | int InitStack(char** stackElem, int ElemNum) { |
由于我本身需要操作的是指针(分配内存),而为了能在函数内操作,我需要获取操作对象的指针,也就是指针的指针(&stackElem),
代码修改过后为
1 | int InitStack(char*** stackElem, int ElemNum) { |
传入一个二维数组的指针,让这个指针指向分配过内存的二维数组从而实现二维数组通过malloc
分配内存。