gpt4 book ai didi

c - 使用指向指针的指针时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:13 25 4
gpt4 key购买 nike

我一直在尝试在函数中使用指向指针的指针,但似乎我没有正确进行内存分配...我的代码是:

#include<stdio.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>


struct list{
int data;
struct list *next;
};

void abc (struct list **l,struct list **l2)
{
*l2=NULL;
l2=(struct list**)malloc( sizeof(struct list*));
(*l)->data=12;
printf("%d",(*l)->data);
(*l2)->next=*l2;
}

int main()
{
struct list *l,*l2;
abc(&l,&l2);
system("pause");
return(0);
}

此代码可以编译,但我无法运行该程序。我遇到了段错误。我该怎么办?任何帮助将不胜感激!

最佳答案

请注意,ll2 在 main 中被声明为指针,并且没有一个被初始化为指向任何东西。所以你有两个选择,要么在 main 中初始化指针,然后在 abc 中使用它们,要么在 abc 中初始化指针。

根据您所写的内容,您似乎想在abc 中进行初始化。为此,您必须 malloc 足够的内存来容纳 struct list,然后将指针设置为指向该内存。生成的 abc 函数如下所示

void abc( struct list **l, struct list **l2 )
{
*l = malloc( sizeof(struct list) );
*l2 = malloc( sizeof(struct list) );

if ( l == NULL || l2 == NULL )
{
fprintf( stderr, "out of memory\n" );
exit( 1 );
}

(*l)->data = 12;
(*l)->next = *l2;

(*l2)->data = 34;
(*l2)->next = NULL;

printf( "%d %d\n", (*l)->data, (*l2)->data );
}

关于c - 使用指向指针的指针时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com