如何在C中返回指向结构的指针。。。?

如何在C中返回指向结构的指针。。。?,c,C,我是C编程新手。。。。 这是我的示例代码 我想写一个函数,它应该返回一个指向结构的指针。。。当我编译下面的代码时。。。我犯了分割错误。。。。。 我知道,我犯了一些小错误…任何关于这个问题的建议都会对我有帮助 #include<stdio.h> struct point *test(int x, int y); struct point { int x; int y; }; int main() { struct point* val2; int xx, yy; xx =

我是C编程新手。。。。 这是我的示例代码

我想写一个函数,它应该返回一个指向结构的指针。。。当我编译下面的代码时。。。我犯了分割错误。。。。。 我知道,我犯了一些小错误…任何关于这个问题的建议都会对我有帮助

#include<stdio.h>

struct point *test(int x, int y);

struct point {
int x;
int y;
};


int main() {

struct point* val2;

int xx, yy;

xx = 1;

yy = 2;

val2 = test(xx, yy);


 }

struct point *test (int xx, int yy) {

struct point *a;

a->x = xx;

a->y = yy;

return (a);

}

谢谢大家的建议

此代码替换了问题

struct point *test (int xx, int yy) {
  struct point *a = malloc(sizeof *a); 
  a->x = xx;
  a->y = yy;
return (a);
}

你认为结构点*a指向?
结构点*a
未分配且未指向有效地址。也要始终使用像
gdb
这样的调试器进行调试。在使用
a
之前,您必须为它分配一个合理的值。垃圾反引用,我最喜欢的a)指针可以保存第二个变量的地址,但它们并不总是这样做(但您的代码看起来像是您假设它们会这样做的)。b) 需要原始指针的情况非常罕见,只是在需要之前不要使用它们。为什么只返回一个值就要返回一个指针呢?您可以验证是否返回了正确的结构,并在main:printf(“%d%d\n”,val2->x,val2->y)中包含这一行;更重要的是,您希望malloc结构的大小;malloc(sizeof(point))
 Segmentation fault(Core dumped)
struct point *test (int xx, int yy) {
  struct point *a = malloc(sizeof *a); 
  a->x = xx;
  a->y = yy;
return (a);
}