流量统计:
Rixu Blog (日需博客)
日需博客,每日必需来踩踩哦..
posts - 108,comments - 54,trackbacks - 0
2个指针指向的地址和变量地址一样,值为什么不一样呢?疑惑。
  1. #include "stdafx.h"
  2.  
  3.  
  4. int _tmain(int argc, _TCHAR* argv[])
  5. {
  6.     const int a=10;
  7.     const int *p1=&a;
  8.     int *p2=const_cast<int *>(p1);
  9.     if (&a==p1)
  10.     {
  11.         printf("&a==p1\n");
  12.     }
  13.     else
  14.     {
  15.         printf("&a!=p1\n");
  16.     }
  17.     if (p2==p1)
  18.     {
  19.         printf("p2==p1\n");
  20.     }
  21.     else
  22.     {
  23.         printf("p2==p1\n");
  24.     }
  25.     printf("%#p:%d %#p:%d %#p:%d\n",&a,a,p1,*p1,p2,*p2);
  26.     *p2=20;
  27.     if (&a==p1)
  28.     {
  29.         printf("&a==p1\n");
  30.     }
  31.     else
  32.     {
  33.         printf("&a!=p1\n");
  34.     }
  35.     if (p2==p1)
  36.     {
  37.         printf("p2==p1\n");
  38.     }
  39.     else
  40.     {
  41.         printf("p2==p1\n");
  42.     }
  43.     printf("
    %#p:%d %#p:%d %#p:%d
    \n"
    ,&a,a,p1,*p1,p2,*p2);
  44.     return 0;
  45. }
  46.  

Logo
作者:Gezidan
出处:http://www.rixu.net    
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2011-09-10 21:21 日需博客 阅读(2209) 评论(7)  编辑 收藏 引用 所属分类: C C++未分类

FeedBack:
# re: 修改const变量的疑问[未登录]
2011-09-10 23:30 | X
是编译器优化造成的  回复  更多评论
  
# re: 修改const变量的疑问
2011-09-11 00:01 | Gezidan Studio
能否详细点?@X
  回复  更多评论
  
# re: 修改const变量的疑问[未登录]
2011-09-11 08:16 | jejer
关键词:常量折叠
const值会在编译时直接被确定  回复  更多评论
  
# re: 修改const变量的疑问
# re: 修改const变量的疑问
2011-09-11 17:43 | 11
欢迎加QQ群来 欢迎大家 提问
QQ群:C C++ linux 软件基地① 64222213 满
QQ群:C C++ linux 软件基地② 93623167 没满
QQ群:C C++ linux 软件基地③ 167881329 满
QQ群:C C++ linux 软件基地④ 174551731 高级群(没满)  回复  更多评论
  
# re: 修改const变量的疑问
2011-09-12 12:07 | 陈梓瀚(vczh)
假设有代码
const int a=0;
int *b=const_cast<int*>(&a);
int c=a;

编译器会变成
int a=0;
int *b=&a;
int c=10;

因此修改*b当然跟c毫无关系了,因为常数被传播了。本来就不应该干修改const变量内容的事情。  回复  更多评论
  
# re: 修改const变量的疑问
2011-09-12 21:13 | Gezidan Studio
非常透彻@陈梓瀚(vczh)
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理