c语言结构指针作为函数参数
答案:3 悬赏:0 手机版
解决时间 2021-02-19 14:18
- 提问者网友:留有余香
- 2021-02-19 10:25
c语言结构指针作为函数参数
最佳答案
- 五星知识达人网友:煞尾
- 2021-02-19 11:22
stu 直接声明的指针,空间没有分配。
可考虑改为:
#include
struct date
{int year,month,day;}stu, *p_stu;
void print(struct date *stu);
void main()
{
p_stu = &stu;
scanf("%d%d%d",&p_stu->year,&p_stu->month,&p_stu->day);
print(p_stu);
}
void print(struct date *stu)
{
printf("birth is %dyear %dmonth %dday
",stu->year,stu->month,stu->day);
}追问指针型结构怎么初始化啊?只能下面这样吗?有没有跟变量型结构一样一次就初始化?
struct date1
{int year,month,day;}*stu;stu=(struct date*)malloc(sizeof(struct data)); stu->year=2014;追答把定义的结构 typedef 一下就能直接用 date stu, *p_stu 这样声明了。例如:
typedef struct date
{
int year,month,day;
} date;
可考虑改为:
#include
struct date
{int year,month,day;}stu, *p_stu;
void print(struct date *stu);
void main()
{
p_stu = &stu;
scanf("%d%d%d",&p_stu->year,&p_stu->month,&p_stu->day);
print(p_stu);
}
void print(struct date *stu)
{
printf("birth is %dyear %dmonth %dday
",stu->year,stu->month,stu->day);
}追问指针型结构怎么初始化啊?只能下面这样吗?有没有跟变量型结构一样一次就初始化?
struct date1
{int year,month,day;}*stu;stu=(struct date*)malloc(sizeof(struct data)); stu->year=2014;追答把定义的结构 typedef 一下就能直接用 date stu, *p_stu 这样声明了。例如:
typedef struct date
{
int year,month,day;
} date;
全部回答
- 1楼网友:何以畏孤独
- 2021-02-19 12:05
你全局变量stu是个指针,没有malloc空间出来就赋值了scanf追问struct da{int year,month,day;}stu;这样就分配内存了,指针必须初始化,否则就没分配内存,别的数据类型不用?
- 2楼网友:佘樂
- 2021-02-19 11:30
#include //空格
void print(struct date *stu);
struct date
{int year,month,day;} stu;//把*去掉就可以了。这样就是一个全局变量了。不是一个指针变量(内存地址的变量)。
void main()
{
scanf("%d %d %d",&stu->year,&stu->month,&stu->day);//空格隔开。区分数字格式可以用逗号。
print(&stu); //加上取地址。
}
void print(struct date *stu)
{
printf("birth is %dyear %dmonth %dday\n",stu->year,stu->month,stu->day);
}追问指针型结构怎么初始化啊?只能下面这样吗?有没有跟变量型结构一样一次就初始化?
struct date1
{int year,month,day;}*stu;stu=(struct date*)malloc(sizeof(struct data)); stu->year=2014;
void print(struct date *stu);
struct date
{int year,month,day;} stu;//把*去掉就可以了。这样就是一个全局变量了。不是一个指针变量(内存地址的变量)。
void main()
{
scanf("%d %d %d",&stu->year,&stu->month,&stu->day);//空格隔开。区分数字格式可以用逗号。
print(&stu); //加上取地址。
}
void print(struct date *stu)
{
printf("birth is %dyear %dmonth %dday\n",stu->year,stu->month,stu->day);
}追问指针型结构怎么初始化啊?只能下面这样吗?有没有跟变量型结构一样一次就初始化?
struct date1
{int year,month,day;}*stu;stu=(struct date*)malloc(sizeof(struct data)); stu->year=2014;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯