[问题] linkedlist之传递问题

楼主: jacky1989   2015-05-24 16:21:48
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2010
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
standard lib.
问题(Question):
我将结构的位址传入副程式,却无法在主程式使用
程式码(Code):(请善用置底文网页, 记得排版)
//linklist.h
struct list{
int num;
struct list *nx;
};
typedef struct list node;
//main.c
#include<stdlib.h>
#include<stdio.h>
void create(node *top, node *previous, node *current);
int main(){
node *top,*previous,*current;
top=previous=current=NULL;
create(top,previous,current);
printf("first data is %d\n",top->num);
printf("second data is %d\n",top->nx->num);
system("pause");
return 0;
}
void create(node *top, node *previous, node *current){
int i;
for(i=0;i<3;i++){
current = (node *)malloc(sizeof(node));
current->nx=NULL;
printf("Enter num");
scanf("%d",&current->num);
if(top==NULL)
top=NULL;
else
previous->nx=current;
previous=current;
}
}
补充说明(Supplement):
print出来的值都是NULL
怎么会这样呢?传递过去不是都是内存位置?理论上来说在主程式或是副程式修改都没问题
是不是我哪边忽略了?我才刚开始学资料串结,拜托帮帮我,别砲新手,谢谢
作者: Frozenmouse (*冰之鼠*)   2015-05-24 16:26:00
你的create里的指标只是外面的指标的挎贝但是它们本身是存在不同地方的变量你的状况要嘛用node**去操作,要嘛用node*&来操作
作者: kwpn (ITSST)   2015-05-24 16:51:00
main里的top与create里的top是不同的指标不是"传位址",而是复制指标的值(指向的位址)给新的指标
作者: Frozenmouse (*冰之鼠*)   2015-05-24 17:22:00
怎么突然出现extern…XDDD
作者: ctrlbreak   2015-05-24 17:23:00
看起来还是没搞懂 XD
作者: tsoahans (ㄎㄎ)   2015-05-24 18:01:00
你做的是传值呼叫 create里面的top跟main里面top没关系
作者: kwpn (ITSST)   2015-05-24 18:04:00
extern XDDD
作者: ctrlbreak   2015-05-24 18:12:00
你原code错在你其实是"传值", 推文是教你怎么改..这种改法如果有1000个linkedlist你要extern到什么时候
作者: Frozenmouse (*冰之鼠*)   2015-05-24 18:34:00
外面 func(&n),里面 *n=... 这样就把node*当成一个型态,node**就是该型态的指标
作者: remizu (remizu)   2015-05-24 18:47:00
请看置底13戒第13项 有生动的图文解说
作者: cobrasgo (人鱼线变成鲔鱼线,超帅)   2015-05-28 21:27:00
有学过组语就知道怎么回事了

Links booklink

Contact Us: admin [ a t ] ucptt.com