Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.0k views
in Technique[技术] by (71.8m points)

C语言关于指针的疑惑

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

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

PS: 确实有warning!!!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

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

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...