【发布时间】:2019-12-14 13:09:19
【问题描述】:
在下面的 C 代码中,我想使用指向 simple_struct 的单个指针访问主函数中的 foo_array。是否可以?我问这个是因为出于某种原因,框架不允许我将双指针作为函数参数传递。
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int a;
float b;
} simple_struct;
void get_foo_value(simple_struct **foo_p)
{
simple_struct foo_array[2] = {{1,2.1},
{3,4.1}};
*foo_p = foo_array;
}
int main()
{
simple_struct *foo_p = 0;
get_foo_value(&foo_p);
}
【问题讨论】:
-
使用参考。或者如果必须使用指针,请使用对指针的引用
-
@DeepeshChoudhary 语言标记为
C- 没有参考。 -
@Adrian - 恢复 Monica 哎呀抱歉
-
您已有的代码有问题。
foo_array具有自动存储功能,这意味着您只能在get_foo_value返回之前合法访问它。一旦get_foo_value返回,您就不能再直接或通过指针引用foo_array。您正在尝试做的是未定义的行为。您需要使用malloc。 -
...或静态存储(通过
static关键字)
标签: c double-pointer