gpt4 book ai didi

c - 没有任何效果 - 引用、指针

转载 作者:行者123 更新时间:2023-11-30 17:53:04 26 4
gpt4 key购买 nike

void load(int *n, int *x, int **arr)
{
arr = (int**)malloc(sizeof(int*)*(*n));
for(int i = *n; i >= 0; i--)
{
scanf("%d", &arr[i]);
}
}

int main()
{
int n = 0, x = 0;
int *arr;

load(&n, &x, &arr);

printf("%d", arr[1]);

return EXIT_SUCCESS;
}

程序编译正确,但在 printf() 期间抛出 windows 错误。在主函数中。仅显示“arr”会给出随机的大数字。这里有什么问题?

最佳答案

arr = (int**)malloc(sizeof(int*)*(*n));

不会更改 main 中的任何内容,它只会覆盖 arr 接收的指针副本( main 中的 load 的地址)。

该函数应该做的是在 arr 中更改 main ,为此,您必须取消引用参数,
*arr = (int*)malloc(sizeof(int)*(*n)); // cast for C++ compiler left in

更改 arrmain 的值。 ( arr 的参数 load 指向的对象,即 arr 中的 main 需要更改,因此需要修改 *arr 中的 load 。)

然后扫描应该是
scanf("%d", &(*arr)[i]);

或等效的)
scanf("%d", *arr + i);

关于c - 没有任何效果 - 引用、指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15851699/

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