level 7
#include<stdio.h>
struct XL{
float x,y;
};
void input(struct XL *p){
printf("输入坐标\n");
scanf("%f,%f",&(p->x),&(p->y));
}
void output(struct XL *p){
printf("%f,%f",p->x,p->y);
}
int main(){
struct XL p;
input(&p);
output(&p);
}
2015年12月25日 14点12分
2
level 7
不知道你有没学过指针,你不想用return输出那只有用指针把值带出来,结构用指针传值比较好些。
2015年12月25日 14点12分
3
level 10
谢谢。另外为什么 int main(){
struct XL p;
input(&p);
output(&p);
}
和 int main(){
struct XL *p;
input(&p);
output(&p);
}
都正常而 int main(){
struct XL *p;
input(p);
output(p);
}
却是错的?
2015年12月25日 15点12分
4
指针类型要接受的是地址,p没有指向,也就是并没有保存地址,&p相当于把p的地址发送给形参
2015年12月25日 23点12分
@赤座阿卡林😄 能不能理解为&p相当于一个指向p的指针?
2015年12月26日 04点12分
@有姓趾 不能这样理解,&是取地址符,p=&xx可以理解为把这个变量的地址找到赋给指针变量p
2015年12月26日 09点12分
level 7
int main(){
struct XL*p=(struct XL*)malloc(sizeof(struct XL));
input(p);
output(p);
}
2015年12月26日 00点12分
5
level 7
我想可能是没给指针分配内存空间把,我也是自学的,理解不是很深入。
2015年12月26日 00点12分
7
main中p没有指向任何内存空间,所以main中的p无法向input中的p传递地址。分配一段内存后,main中的p就可以把这段内存的地址传递给input中的p了
2015年12月26日 04点12分
level 7
int main(){
struct XL*p;//=(struct XL*)malloc(sizeof(struct XL));
printf("p=%p\n",p);
input(p);
output(p);
}
2015年12月26日 05点12分
8
level 6
scanf输入语句应该是scanf("%f,%f",&p.a,&p.b)。但即使这样,你依然无法达到你的目的,因为值传递是无法将形参的值传递给实参的,你只能使用指针来达到目的。
✎﹏﹏
楼主,老夫夜观星象,决定给你赐名:阳篋霫,你看如何?
2015年12月26日 05点12分
11