gpt4 book ai didi

c - 指针数组的动态分配

转载 作者:太空狗 更新时间:2023-10-29 14:52:00 27 4
gpt4 key购买 nike

下面的代码给出了一个段错误。我不知道为什么。请看..

#include <stdio.h>
#include <stdlib.h>

int main()
{
int **ptr;
int *val;
int x = 7;
val = &x;
*ptr = (int *)malloc(10 * sizeof (*val));
*ptr[0] = *val;
printf("%d\n", *ptr[0] );

return 0;
}

在使用 gdb 进行调试时,它说:

Program received signal SIGSEGV, Segmentation fault.

0x0804843f in main () at temp.c:10

*ptr = (int *)malloc(10 * sizeof (*val));

如有任何帮助,我们将不胜感激。

最佳答案

int **ptr; 
*ptr = (int *)malloc(10 * sizeof (*val));

第一条语句声明了一个双指针。
第二个取消引用指针。为了能够取消引用它,指针应该指向一些有效的内存。因此它不会出现段错误。

如果你需要为你需要的指针数组分配足够的内存:

ptr = malloc(sizeof(int *) * 10); 

现在 ptr 指向一个足够大的内存,可以容纳 10 个指向 int 的指针。
现在可以使用 ptr[i] 访问本身是指针的每个数组元素,其中,

i < 10

关于c - 指针数组的动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579719/

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