如何在C中返回指向结构的指针。。。?
我是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 =
#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);
}