開發平台(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",¤t->num);
if(top==NULL)
top=NULL;
else
previous->nx=current;
previous=current;
}
}
補充說明(Supplement):
print出來的值都是NULL
怎麼會這樣呢?傳遞過去不是都是記憶體位置?理論上來說在主程式或是副程式修改都沒問題
是不是我哪邊忽略了?我才剛開始學資料串結,拜託幫幫我,別砲新手,謝謝