指针值不会一起变化?

时间:2018-02-28 23:44:42

标签: c pointers

#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取消引用的值,但是取消引用的值不会改变。有人能解释为什么吗?我以为他们应该一起改变。

1 个答案:

答案 0 :(得分:2)

b = (int*)malloc(sizeof(int));之后,b指向刚刚分配的内存块,a仍包含NULL
执行*b = 10;时,将10分配在您分配的内存块中。尽管如此,a并未指出任何内容。

由于永远不会指出a指向任何内容,*a中的printf没有任何意义。