C语言和C++共用体总结

论坛 期权论坛 期权     
北京boy的学习生活分享   2019-7-7 23:04   2361   0
前天,论文答辩被怼成了狗。后10%稳稳地,今天,开始C语言回炉,因为论文需要,所以重新学习一下。
以前学习的时候,就没有弄清楚指针,现在一看到*和&就可开始迷糊。
今天,分享一下指针的一个陷阱,代码如下:
#include
# define a *p
# define b *q
int main(void)
{
    int x;
    int *p , *q;/*定义两个指针*/
    p=&x;
    q=&x; /*两个指针指向同一块区域*/
    a=2;
    b=3;
    printf("the value is :%d\n",a+b);
    return 0;
}


截图如上,居然2+3=6出现了?其实,原理是这样的:a和b实际上是同一个内存区域的两个别名。那么,对其赋值相当于对同一个变量赋值,之前的赋值就会被覆盖,也就是此时a=3,b=3。


在C++当中,也有非常类似的用法:共用体。举个例子:
#include
using namespace std;
int main()
{
    union data
    {
        char a;
        char b;
    };
    data x;
    x.a ='W';
    cout
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP