gpt4 book ai didi

更改C中的指针

转载 作者:太空狗 更新时间:2023-10-29 15:26:11 24 4
gpt4 key购买 nike

在写代码的时候遇到了一个问题

char* a = malloc (sizeof(char));
a = "blabla";
free(a);

给我一​​个错误,因为我将指针 a 的值更改为其他值。

那么,为什么会这样呢

char* a = "blabla";
printf("%s", a);

我再次将指针的值更改为 blabla,我破坏了指针地址。应该是错误吧?

最佳答案

第一种情况有一个错误,因为您将地址传递给 free 而不是从 malloc 获得的地址。这是一个错误。

第二种情况没有这个问题,那为什么不行呢?您不是在“破坏”指针的地址,而是将其设置为有效地址,然后将该有效地址用于有效目的。

第二个例子没有什么不同:

int i = 1;
printf ("%d", i);

您设置了它的值并以正确的方式使用了新的合法值,所以没问题。

关于更改C中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32051189/

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