美文网首页
变量和指针赋值在内存中的表现

变量和指针赋值在内存中的表现

作者: 壮了个壮 | 来源:发表于2021-11-27 10:41 被阅读0次

在开发中,发现忘记了很基础的内容。所以学习记录下
C语言中会遇到指针和变量之间赋值的情况,*和&以及组合。如果不知道符号的真实含义,就会很容易遗忘甚至出错。

其实只要记住4点:

  • *表示取值符号
  • &表示取址符号
  • 变量保存值,指针指向地址。
    以如下代码举例
int *i_point;
int i=3;
i_point=&i;

内存总的表现如图

变量和指针赋值示意图
i 是整形变量,保存值,C语言i表示3,也就是指向存着3内存块,所以i输出是3。
&i &表示取址,所以&i就是0x101
i_point 是指针变量,保存地址,C语言i_point表示赋值变量的地址0x201,也就是i的地址0x201
&i_point 表示i_point取地址,也就是0x301
*i_point 表示i_point取值, i_point是i的地址&i,a的地址取值即i,也就是3
*&i_poinrt 表示i_point取地址后再取值,也就是&i_point上的值,地址: 0x301上的值为0x201
&*i_point 表示i_point取值后再取地址,也就是* i_point(或a)的地址,也就是0x101

代码如下:

#include <stdio.h>
int main(){
    // 变量,值,指针在初始化时候的意义
    int i=3;
    // 1.变量赋值 在内存中创建了一个地址0x101存放值3,然后再创建一个地址0x201存放0x101。
    printf("整形变量的值:%d,整形变量的地址:%p\n",i,&i);
    // 2.指针赋值 在内存中创建了一个地址0x301存放地址0x201。
    int *i_point;
    i_point=&i;
    // 只要记住:*表示取值符号,&表示取址符号,变量保存值,指针保存地址。
    // i  是整形变量,保存值,C语言i表示3,也就是指向存着3内存块,所以i输出是3。
    printf("i  是整形变量,保存值,C语言i表示3,也就是指向存着3内存块,所以i输出是%d\n",i);
    // &I  &表示取址,所以&i就是0x101
    printf("&表示取址,所以&i就是%p\n",&i);
    // i_point 是指针变量,保存地址,C语言i_point表示赋值变量的地址0x201,也就是i的地址0x201
    printf("i_point 是指针变量,保存地址,C语言i_point表示赋值变量的地址%p,也就是i的地址%p\n",i_point,&i);
    // &i_point 表示i_point取地址,也就是0x301
    printf("&i_point 表示i_point取地址,也就是%p\n",&i_point);
    // *i_point 表示i_point取值,i_point是i的地址&i,a的地址取值即i,也就是3
    printf("*i_point 表示i_point取值,i_point是i的地址&i,&i取值即i,也就是%d\n",*i_point);
    // *&i_poinrt 表示i_point取地址后再取值,也就是&i_point上的值,地址: 0x301上的值为0x201
    printf("*&i_poinrt 表示i_point取地址后再取值,也就是&i_point上的值,地址: %p上的值为%p\n",&i_point,*&i_point);
    // &*i_poinrt表示i_point取值后再取地址,也就是* i_point的地址,值的地址,也就是0x101
    printf("&* i_poinrt表示i_point取值后再取地址,也就是* i_point(或a)的地址,也就是%p\n",&*i_point);
    return 0;
}

相关文章

  • 变量和指针赋值在内存中的表现

    在开发中,发现忘记了很基础的内容。所以学习记录下C语言中会遇到指针和变量之间赋值的情况,*和&以及组合。如果不知道...

  • C语言 指针

    每一个变量都有内存地址,而指针就是用来存储变量内存地址的。 通过指针给变量赋值 输出结果: 上面的示例中,我们看到...

  • 链表(下):如何轻松写出正确的链表代码

    技巧一:理解指针或者引用的意义 指针或者引用都是存储对象的内存地址。将某个变量赋值给指针,就是将这个变量的地址赋值...

  • C语言基础知识备忘

    数组: 声明并初始化赋值: 赋值: PS: 指针: 变量、数组、函数等都是存在于计算机内存中。内存中存放的位置就叫...

  • 内存相关

    指针指的是用于存储内存地址的变量在32位内存地址的环境中,指针变量的长度是32位。指针类型.png 内存IC中电源...

  • python基础语法-2

    9.变量,赋值语句 变量 (variable): 变量是指向某个值的名称。实际上是到对象内存空间的一个指针。 赋值...

  • iOS指针

    OC中的内存地址:一:指针变量自己所在的内存地址(指针变量也是变量,也有内存地址)二:指针变量所指向的内容的内存地...

  • C语言指针

    指针的定义 指针的本质就是内存地址; 指针变量存储的是指针,也就是存储内存地址的变量; 在计算机世界中,内存地址其...

  • 六、Go指针

    六、Go语言指针 1.使用&访问变量在内存中地址 2.指针 一个指针变量指向一个值的内存地址。 与变量和常量相同,...

  • 链表(下)写出正确的链表代码的6个技巧

    技巧一:理解指针或引用的含义 指针或引用存储的是对象的内存地址。将某个变量赋值给指针,实际上就是将这个变量的地址赋...

网友评论

      本文标题:变量和指针赋值在内存中的表现

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