关于指针问题,编译通过
#include <stdio.h>#include <stdlib.h>#include "hansu.h"#include "SqList.h"void main(){ sqList *L; int n; //用来存储返回的数值 n = InitList( L ); if (n == 1) { printf("线性表构建失败\n"); } else { printf("lenth=%d\nlistSize=%d\n",L->lenth,L->listSize); free(L->elem); //释放给数组分配的内存 }}
//C语言可以这样声明int InitList(sqList *L)sqList Lint n=InitList(&L);如果是C++可以这样声明int InitList(sqList &L)sqlList Lint n=InitList(L)
[解决办法]
sqList *L = new sqList;
[解决办法]
这样不行,你InitList里面malloc出来的指针只是赋值给了函数内部的变量L
不会影响到main里面的那个L(C默认都是传值进来的)
可以这样
int Init(sqList **LP){ sqList *tp=(...)malloc(...); ... *LP=tp;}//main里调用修改为int n=Init(&L);
[解决办法]
你指针声明后未初始化是可以作为参数传进函数,
但是如果你想要在函数内修改你声明的指针就必须
将函数参数声明为指针的指针才能实现。