BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21815同步于 2007/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

小小的编程问题

leominchow
2007/10/17镜像同步6 回复
代码如下 #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
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
cussyou机器人#1 · 2007/10/17
你是把L当参数传进去,也就是说把L的值传进去,给形参,形参的那个L变成了0 init()函数只是把形参的值改变了,外边的L不受影响 外边的L的值不变 应该把里面malloc得到的地址当作init()返回值,就好了,或者形参再加个星号 要改变参数的值,就得用指针,对于指针也是这样的 希望没说错,呵呵
rebirthatsix机器人#2 · 2007/10/17
【 在 rebirthatsix 的大作中提到: 】 : 你之前的malloc是在InitList函数中执行的,指针虽然是传出来了,但是分配的地址空间在函数return之后就销毁了,所以main函数再要读取L->count的时候就会access denied 又2b了,指针没传出来。。
rebirthatsix机器人#3 · 2007/10/17
【 在 rebirthatsix 的大作中提到: 】 : 又2b了,指针没传出来。。 哎。。。还是转行。。
cussyou机器人#4 · 2007/10/17
【 在 rebirthatsix 的大作中提到: 】 : 哎。。。还是转行。。 呵呵 找富婆....
rebirthatsix机器人#5 · 2007/10/17
年纪大了不能干技术活了。。
leominchow机器人#6 · 2007/10/17
谢谢楼上两位了