在下面的代码中,我想访问在函数内部动态分配的结构元素。我已经全局声明了结构,但是在fun1()内部分配了结构。收到结构元素后,我无法访问该结构元素。请帮助我哪里出问题了。如果在单个功能中,则可以正常工作。提前致谢。
struct s1
{
int a;
char b[10];
} *s2;
int val;
void main()
{
fun1();
fun2();
printf("\n Element a %d",(s1->a));
}
fun1()
{
struct s1 *s2=malloc(sizefof(struct s1)*val);
recv(fd,(void)&s2,sizeof(struct s1),0);
}
fun2()
{
printf("\n Element a %d",(s1->a));
}
最佳答案
这里有很多混乱。
这样的事情可能就是您想要的:
struct s1
{
int a;
char b[10];
};
struct s1 * fun1(int val)
{
struct s1 *s = malloc(val * sizeof *s);
if(s != NULL)
recv(fd, s, val * sizeof *s, 0);
return s;
}
void fun2(struct s1 *ptr)
{
printf("First element's a %d", ptr[0].a);
}
int main(void)
{
struct s1 *data = fun1(100);
fun2(data);
printf("First element's a is %d", data[0].a);
return 0;
}
请注意,
recv()
也可能会失败,因此应进行检查。它也应该是read()
吗?基本上,我删除了全局变量,并修复了分配和指针使用方面的基本错误。
关于c - 访问函数内部的动态分配的结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27904619/