首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于指针有关问题,编译通过

2012-03-15 
关于指针问题,编译通过C/C++ code#include stdio.h#include stdlib.h#include hansu.h#include SqL

关于指针问题,编译通过

C/C++ code
#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); //释放给数组分配的内存    }}


执行的时候发生错误,是我是在InitList函数给L分配内存的,难道要在传递L之前给L初始化?

[解决办法]
把你的代码弄全阿,不知道你InitList怎么声明的
C/C++ code
//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默认都是传值进来的)
可以这样
C/C++ code
int Init(sqList **LP){    sqList *tp=(...)malloc(...);    ...    *LP=tp;}//main里调用修改为int n=Init(&L);
[解决办法]
你指针声明后未初始化是可以作为参数传进函数,
但是如果你想要在函数内修改你声明的指针就必须
将函数参数声明为指针的指针才能实现。

热点排行