gpt4 book ai didi

c - 为什么在使用指向指针的指针时出现 malloc() 的段错误?

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

我不明白为什么会这样:

void main() { 
int * b;
b = (int *)malloc(sizeof(int));
*b = 1;
printf("*b = %d\n", *b);
}

虽然这不是(获取 malloc() 的段错误):

void main() {

int ** a;
int i;

for (i = 0; i<= 3; i++) {
a[i] = (int*)malloc(sizeof(int));
*(a[i]) = i;
printf("*a[%d] = %d\n", i, *(a[i]));
}
}

因为我发现 a[i] 就像第一个示例中的 b

顺便说一句,a[i] 等于 *(a+i),对吧?

最佳答案

你需要先为a分配内存,这样你就可以像a[i]一样访问它的成员。

所以如果你想分配 4 int *

a = malloc(sizeof(int *) * 4);

for (i = 0; i<= 3; i++) {
...
}

或将其定义为整数指针数组

int *a[4];

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

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