gpt4 book ai didi

c - 指针值不一起改变?

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:26 26 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
int main(){
int* a = NULL;
int* b = a;
b = (int*)malloc(sizeof(int));
*b = 10;
printf("%d, %d", *a, *b);
return 0;
}

通过上面的代码,我发现虽然我改变了b解引用的值,但是a解引用的值并没有改变。有人可以解释为什么吗?我认为他们应该一起改变。

最佳答案

b = (int*)malloc(sizeof(int));之后,b指向你刚刚分配的内存块,a 仍然包含 NULL
当您执行 *b = 10; 时,您会在分配的内存块中存储一个 10。不过,a 没有指向任何东西。

因为 a 从来没有指向任何东西,所以 printf 中的 *a 没有任何意义。

关于c - 指针值不一起改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49040485/

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