整体功能实现基本没有大问题,有一些细节还需要完善一下: 1. 栈的大小是栈的一个属性,所以应该定义在Stack结构体里面,然后在创建栈的时候用用户传的栈大小来初始化这个属性,后续判断栈是否满的时候直接比较top和这个值即可,不需要用户再次传入。 2. 虽然NULL底层也是0,但是一般会做下类型转换`(void*)0`,所以和指针比较的时候,尽量用NULL,而不是0,如果用0,大多数编译器会给警告,所以要养成好习惯。 3. `stack_init`函数里面第一个`malloc`返回值没有判NULL。 4. `stack_free`里面有内存泄漏,研究一下~