返回信息流代码如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node{
char word[20];
int counts;
struct node *next;
}node,*list;
int InitList(list L)
{
L=(list)malloc(sizeof(node));
if(!L) return 0;
strcpy(L->word,"test");
L->counts=20;
L->next=NULL;
return 1;
}
int main()
{
list L=NULL;
InitList(L);
printf("d%",L->counts);
return 0;
}
编译通过,执行出错
调试时发现了access violation的错误,GOOGLE后知道可能是内存分配或指针问题,希望高手告之,小弟程序菜鸟,轻度BT
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21815同步于 2007/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
小小的编程问题
leominchow
2007/10/17镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
你是把L当参数传进去,也就是说把L的值传进去,给形参,形参的那个L变成了0
init()函数只是把形参的值改变了,外边的L不受影响
外边的L的值不变
应该把里面malloc得到的地址当作init()返回值,就好了,或者形参再加个星号
要改变参数的值,就得用指针,对于指针也是这样的
希望没说错,呵呵
【 在 rebirthatsix 的大作中提到: 】
: 你之前的malloc是在InitList函数中执行的,指针虽然是传出来了,但是分配的地址空间在函数return之后就销毁了,所以main函数再要读取L->count的时候就会access denied
又2b了,指针没传出来。。