一个数据结构问题,困扰我好久了
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define error -1
#define ok 1
#define list_length 100
#define inc 10
struct data{
char num[5]; //编号
char name[9]; //姓名
char sex[3]; //性别
char phone[13]; //电话
char addr[31]; //地址
};
typedef struct{
int length;
int listsize;
struct data data[100];
}SqList;
typedef SqList *LinkList;
int CreatList(LinkList head){
head=(LinkList)malloc(list_length*sizeof(SqList));
if(head==NULL)return error;
head->length=0;
head->listsize=list_length;
int i=0,flag=0;
while(flag==0){
if(head->length>=head->listsize){
LinkList p=(LinkList)realloc(head,(head->listsize+inc)*sizeof(SqList));
if(p==NULL)return error;
head=p;
head->listsize+=inc;
}
printf("学号 姓名 性别 电话 地址\n");
scanf("%s%s%s%s%s",&head->data[i++].num,&head->data[i++].name,&head->data[i++].sex,
&head->data[i++].phone,&head->data[i++].addr);
head->length++;
printf("要继续建表吗?0 继续;1 结束");
scanf("%d",&flag);
}
return ok;
}
int print(LinkList head){
int len=0;
for(;len<head->length;len++){
printf("创建的顺序表");
printf("%s%s%s%s%s",head->data[len].num,head->data[len].name,head->data[len].sex,head->data[len].phone,head->data[len].addr);
}
return ok;
}
void main(){
LinkList head;
CreatList(head);
print(head);
}
为什么调用CreatList(head);后 主函数的head的值还是没变,这里不是地址传递吗?