帮忙看一下 *p->x = a; 为什么不行 该怎么该?

宙斯之神 2006-10-02 03:16:43
#include "malloc.h"
#include "stdio.h"

struct data{
int x;
int y;
};

int getCoordX(struct data *p)
{
return p->x;
}
int getCoordY(struct data *p)
{
return p->y;
}

void CoordCons(struct data **p,int a, int b)
{

*p= (struct data*)malloc(sizeof(struct data));
*p->x = a;
*p->y = b;

}
void main()
{
struct data *a=NULL;
CoordCons(&a,3,4);
int x;
x = getCoordX(a);
int y;
y = getCoordY(a);
printf("%d %d ",x,y);


}
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuejinn 2006-10-07
  • 打赏
  • 举报
回复
mark
Jokar 2006-10-02
  • 打赏
  • 举报
回复
struct data *a=NULL;
CoordCons(&a,3,4);
--------------------
这个 a初始化指向NULL,然后 将&a传参这一做法就错了,a并未指向任意具体空间就取地址是错误的行为;

你的程序这样该一下应该能行:

#include <malloc.h>
#include <stdio.h>

struct data{
int x;
int y;
};

int getCoordX(struct data *p)
{
return p->x;
}
int getCoordY(struct data *p)
{
return p->y;
}

void CoordCons(struct data *p,int a, int b)
{
p->x = a;
p->y = b;
}
void main()
{
int x, y;
struct data *a=malloc(sizeof(struct data));
CoordCons(a,3,4);

x = getCoordX(a);

y = getCoordY(a);
printf("%d %d ",x,y);


}

这样扩展性也增强了~ 就是 你在main中 可以 定义 struct data的变量使用,比如:
struct data X;然后传址初始化, CoordCons(&X, 3, 4);

以上~

宙斯之神 2006-10-02
  • 打赏
  • 举报
回复
ok !多谢啦!
Arthur_ 2006-10-02
  • 打赏
  • 举报
回复
->優先機別要高
Arthur_ 2006-10-02
  • 打赏
  • 举报
回复
(*p)->x = a;

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧