gpt4 book ai didi

c - 在另一个函数中分配的动态数组

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

我想了解动态内存在 C 中的工作原理。假设我需要使用另一个函数为某个指针分配内存。是否可以?我在下面的程序中尝试过,但它在 Windows 中一直崩溃。

void foo(int** x){
*x=(int *)malloc(10*sizeof(int));
int i;
for(i=0; i<10; i++){
*x[i] = 0;
}
}

int main(int argc, char* argv[]){

int *x;
int i;
foo(&x);
for(i=0; i<10; i++){
printf("%d\n",x[i]);
}
return 0;

}

最佳答案

问题出在这一行。

*x[i] = 0;

在指针取消引用中添加括号。

(*x)[i] = 0;

这是因为 x[i] 实际上意味着 *(x+i)。即,将 i 添加到指针 x 以获得新指针并获取该内存位置的值。

现在记住 x 是指向指针的指针。 *x[i] 可以更容易地读作 **(x+i) 而实际上你想要 *((*x)+i).

您可能需要花些时间思考才能理解,但是一旦您掌握了要点,指针就很容易了。

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

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