#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取消引用的值,但是取消引用的值不会改变。有人能解释为什么吗?我以为他们应该一起改变。
答案 0 :(得分:2)
在b = (int*)malloc(sizeof(int));
之后,b
指向刚刚分配的内存块,a
仍包含NULL
。
执行*b = 10;
时,将10分配在您分配的内存块中。尽管如此,a
并未指出任何内容。
由于永远不会指出a
指向任何内容,*a
中的printf
没有任何意义。