Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1468467
  • 博文数量: 842
  • 博客积分: 12411
  • 博客等级: 上将
  • 技术积分: 5772
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-14 14:43
文章分类

全部博文(842)

文章存档

2013年(157)

2012年(685)

分类:

2012-06-26 11:32:38

#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变量的内容,尽管编译通过,但是语句无效。


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