Chinaunix首页 | 论坛 | 博客
  • 博客访问: 714849
  • 博文数量: 126
  • 博客积分: 2944
  • 博客等级: 上校
  • 技术积分: 1160
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-17 11:09
个人简介

文章分类

全部博文(126)

文章存档

2022年(1)

2018年(1)

2017年(5)

2016年(5)

2013年(5)

2012年(21)

2011年(24)

2010年(1)

2009年(2)

2008年(12)

2007年(6)

2006年(19)

2005年(24)

分类: C/C++

2012-06-25 11:48:47

#include
typedef struct {
    int i;
    int j;
} st;

int main()
{
    const int n = 9;
    int *p = (int *)&n;

    printf("%d\n", n);
    *p = 5;
    printf("%d\n", n);

    const st t1 = {1, 2};
    st * t2 = (st *)&t1;

    printf("%d, %d\n", t1.i, t1.j);
    t2->i = 3;
    t2->j = 4;
    printf("%d, %d\n", t1.i, t1.j);

    return 0;
}

gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 输出:
9
5
1, 2
3, 4



**************************************
如果在给指针赋值时没有进行强制类型转换,那么 c 和 c++ 的表现不同:
gcc编译:

g++编译,则直接出现错误:


强制类型转换后,c 与 c++ 的执行结果也不同:
c:通过指针可以改变const变量的内容;
c++:不能通过指针改变const变量的内容,尽管编译通过,但是语句无效。


阅读(3183) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~