求解 C语言指针结构体报错+warning问题

编译器是gcc,用的是devC++,下面是源代码其中第17行报错:[Error]invalidtypeargumentofunary'*'(have'int')第18行警... 编译器是gcc,用的是dev C++,下面是源代码
其中
第17行报错: [Error] invalid type argument of unary '*' (have 'int')
第18行警告:[Warning] passing argument 1 of 'print' makes pointer from integer without a cast [enabled by default]
第21行报错:[Error] conflicting types for 'getStruct'
以下代码在Unix环境下运行正常
--------------------------------------------------------------------------------------------
#include <stdio.h>

struct point{
int x;
int y;
};

struct point* gerStruct(struct point *);
void output (struct point);
void print(const struct point *p);

int main(int argc,char const *argv[])
{
struct point y = { 0 , 0};
getStruct(&y);
output(y);
output(*getStruct(&y));
print(getStruct(&y));
}

struct point* getStruct(struct point *p)
{
struct point p;
scanf("%d",&p.x);
scanf("%d",&p.y);
printf("%d %d\n",p.x,p.y);
return p;
}

void output (struct point p)
{
printf("%d %d\n",p.x,p.y);
}

void print(const struct point *p)
{
printf("%d %d\n",p->x,p->y);
}
展开
 我来答
风若远去何人留
2018-04-09 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部
#include <stdio.h>

struct point{
int x;
int y;
};

struct point* getStruct(struct point *);
void output (struct point);
void print(const struct point *p);

int main(int argc,char const *argv[])
{
struct point y = { 0 , 0}; 
getStruct(&y);
output(y);
output(*getStruct(&y));
print(getStruct(&y));
}

struct point* getStruct(struct point *p)
{
//static struct point p;
scanf("%d",&p->x);
scanf("%d",&p->y);
printf("%d %d\n",p->x,p->y);
return p; 
}

void output (struct point p)
{
printf("%d %d\n",p.x,p.y);
}

void print(const struct point *p)
{
printf("%d %d\n",p->x,p->y);
}
追问
第24-26行的改动,明白了,我把指针来当成结构来访问了。。。
但能解释一下第23行为什么不能声明struct point p呢,怎么成静态的了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式