将结构传递给C中的功能

时间:2014-11-06 22:57:19

标签: c structure pass-by-value

#include<stdio.h>
#include<stdlib.h>

struct point
{
int x;
int y;

};

void get(struct point p)
{
printf("Enter the x and y coordinates of your point: ");
scanf("%d %d",&p.x,&p.y);
}

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




int main ()
{
struct point pt;
get(pt);
put(pt);
return 0;

}

我正在尝试编写一个程序来获取用户的x和y坐标,然后将它们打印到屏幕上。一旦我输入x和y坐标并出去将它们打印到屏幕上,我得到:(x,y)=(56,0)。我不熟悉结构,所以任何帮助都会很好。谢谢。

3 个答案:

答案 0 :(得分:2)

您也可以直接从get函数返回结构,因为这是一个小结构。

struct point get()
{
struct point p;
printf("Enter the x and y coordinates of your point: ");
scanf("%d %d",&p.x,&p.y);
return p;
}

int main ()
{
put(get());
return 0;
}

答案 1 :(得分:1)

void get(struct point *p)// get(&pt); call from main
{
    printf("Enter the x and y coordinates of your point: ");
    scanf("%d %d",&p->x,&p->y);
}

答案 2 :(得分:0)

你必须使用指针,否则get函数中的点是main函数中点的副本。

#include<stdio.h>
#include<stdlib.h>

typedef struct point
{
    int x;
    int y;

} Point;

void get(Point *p)
{
    printf("Enter the x and y coordinates of your point: ");
    scanf("%d %d",&p->x,&p->y);
}

void put(Point *p)
{
    printf("(x,y)=(%d,%d)\n",p->x,p->y);
}


int main ()
{
    Point pt;
    get(&pt);
    put(&pt);
    return 0;
}