#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变量的内容,尽管编译通过,但是语句无效。
阅读(3189) | 评论(0) | 转发(1) |