c语言的传值与传指针的问题
这个是一个精简的程序,主要问题在main函数中#include<stdio.h>#include<stdlib.h>structCountry{charcounnum[5...
这个是一个精简的程序,主要问题在main函数中
#include<stdio.h>
#include<stdlib.h>
struct Country
{
char counnum[5];
char counname[21];
int population;
int family;//depositor存款人
float relief;//救济金
Country *next;
};
typedef struct Country *Lcountry;
//生成数据
int CreateData(Lcountry *head)
{
Country* s,*p;
int i,num;
printf("输入个数:");
scanf("%d",&num);
if(num<1)
{
printf("个数不合法\n");
return 0;
}
//录入数据
for(i=1;i<=num;i++)
{
if((s=(Country*)malloc(sizeof(struct Country)))==NULL)
{
printf("内存申请出错\n");
return 0;
}
printf("输入counnum counname population family relief,中间用空格隔开\n");
if(scanf("%s%s%d%d%f",s->counnum,s->counname,&s->population,&s->family,&s->relief)!=5)
{
printf("录入数据有误\n");
return 0;
}
s->next=NULL;
if(i==1)
{
*head=p=s;
}
else
{
p->next=s;
p=s;
}
}
return 1;
}
//显示数据
void Print(Country* p)
{
printf("counnum \t counname \t population \t family \t relief\n");
while(p!=NULL)
{
printf("%s\t\t%s\t\t%d\t\t%d\t\t%0.1f\n",p->counnum,p->counname,p->population,p->family,p->relief);
p=p->next;
}
}
int main()
{
Country* head=NULL;
//生成数据
CreateData(&head);//这个为什么传的head的值,不过我printf之后显示还是一个地址
//显示数据
Print(head);//这个为什么又传的地址
system("pause");
}
main函数中的两个函数为什么要这么传?
有个问题就是为什么需要双重的指针 展开
#include<stdio.h>
#include<stdlib.h>
struct Country
{
char counnum[5];
char counname[21];
int population;
int family;//depositor存款人
float relief;//救济金
Country *next;
};
typedef struct Country *Lcountry;
//生成数据
int CreateData(Lcountry *head)
{
Country* s,*p;
int i,num;
printf("输入个数:");
scanf("%d",&num);
if(num<1)
{
printf("个数不合法\n");
return 0;
}
//录入数据
for(i=1;i<=num;i++)
{
if((s=(Country*)malloc(sizeof(struct Country)))==NULL)
{
printf("内存申请出错\n");
return 0;
}
printf("输入counnum counname population family relief,中间用空格隔开\n");
if(scanf("%s%s%d%d%f",s->counnum,s->counname,&s->population,&s->family,&s->relief)!=5)
{
printf("录入数据有误\n");
return 0;
}
s->next=NULL;
if(i==1)
{
*head=p=s;
}
else
{
p->next=s;
p=s;
}
}
return 1;
}
//显示数据
void Print(Country* p)
{
printf("counnum \t counname \t population \t family \t relief\n");
while(p!=NULL)
{
printf("%s\t\t%s\t\t%d\t\t%d\t\t%0.1f\n",p->counnum,p->counname,p->population,p->family,p->relief);
p=p->next;
}
}
int main()
{
Country* head=NULL;
//生成数据
CreateData(&head);//这个为什么传的head的值,不过我printf之后显示还是一个地址
//显示数据
Print(head);//这个为什么又传的地址
system("pause");
}
main函数中的两个函数为什么要这么传?
有个问题就是为什么需要双重的指针 展开
6个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询