C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 这项任务后它的内存地址不一样吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
int *p = NULL,c,*q;
c=10;
p = &c;
q = p; 

printf ("%d and %d ",&p,&q );

输出

2686788 and 2686780

我的问题是:据我所知,我认为内存地址是相同的,因为我已将p分配给q.可能是我错了.

解决方法

p和q是两个不同的变量,它们的地址不同. & p和& q分别是p和q的地址.
p和q的内容将相同,即它们在赋值后将包含相同的存储器地址

q = p;

p和q现在都指向相同的内存位置.至于插图,这在以下ASCII艺术中显示

p                          
      +-------+                      
      |       |                 c    
0x200 | 0x100 +---------+   +-------+
      |       |         +-> |       |
      +-------+             |  10   |
          q             +-> |       |
      +-------+         |   +-------+
      |       |         |     0x100  
0x300 | 0x100 +---------+            
      |       |                      
      +-------+                      


        p = q but &p != &q

注意:要打印指针数据类型,请在printf中使用%p说明符.

printf ("%p and %p ",(void *)&p,(void *)&q );

大佬总结

以上是大佬教程为你收集整理的c – 这项任务后它的内存地址不一样吗?全部内容,希望文章能够帮你解决c – 这项任务后它的内存地址不一样吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。