美文网首页
C语言中 * 和 &的实际理解

C语言中 * 和 &的实际理解

作者: Poison_19ce | 来源:发表于2017-06-01 11:27 被阅读0次

    & 是位操作运算符 *代表指针

    在C语言中 

    &可以用来拿到变量在内存中存储的地址 

    *可以用来拿到对应地址中的具体内容

    比如 :

    int a=123;

    直接printf        printf("a = %d",a);       可以直接获得 打印 123 内容

    直接 printf       printf("a = %p",&a);    打印的地址是 0x.............一个十六进制的地址

    那么我们定义一个指针变量

    int *b = NULL;

    b = &a;  //*b代表指针变量 而 b只能赋值为地址 

    当我们想要拿到指针 *b 中的内容的时候     printf("%d",*&b);    打印的结果与a变量是一样的

    在之前 我们已经把变量a的值赋给了*b  

    现在 *b的值也就是 123

    如果我们对 *b的值进行重新赋值

    *b = 512;

    那么打印结果 

    printf("a = %d\n",a);

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

    // a = 512  b = 512;

    为什么会这样呢?

    因为在赋值之后 指针*b  指向 变量a 这个时候 相当于 指针*b直接指向了 a的内存 所以 对指针*b做修改的时候就是对那块内存中的内容进行修改 所以修改了 *b后 变量a中的内容也也会被修改

    最终总结我的理解 只有一句话

    &是为了拿到变量的内存地址  而 *就是为了拿到对应内存地址中的内容

    相关文章

      网友评论

          本文标题:C语言中 * 和 &的实际理解

          本文链接:https://www.haomeiwen.com/subject/pxgsfxtx.html