C语言关于指针的疑惑

int main(){
      int b = 123;
      int* a = b; //上面的
      //int* a = &b; 下面的
      printf("%d",a);
      return 0;
}

用clion编译以上代码,上面的输出123,下面的输出一个貌似内存地址的int类型的值。下面的可以理解,上面的写法有点懵逼,为什么可以那样写,而且可以编译通过,没有warning。

PS: 确实有warning!!!

阅读 1.4k
1 个回答

你说能编译过,应该截图出来!!!

int b = 123;
int 类型
b 变量的名字
123 值

变量的名字,其实它是地址的助记符,当它被编译器处理后,会变成一个地址,是一个虚拟地址,cpu运行后时,会拿这地址转换为物理地址。

而你的程序用gcc编译必然会warnning
图片.png

指针其实只是一个地址,而*a它是一个用于存储地址的变量,被你们称为指针变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进