美文网首页
指针、变量、结构体的内存理解

指针、变量、结构体的内存理解

作者: HardMan | 来源:发表于2021-08-17 20:03 被阅读0次

指针也是一种数据类型 ,在内存当中,代表一块4字节大小的区域(32位操作系统),这个区域存的值是一个地址。
跟int这种数据类型一样 ,内存上同样代表一个4字节大小的区域,只不过区域上存的是int类型的数字而已。
内存区域都有一个首地址,通过&符号我们可以拿到该区域的首地址,但指针类型还可以通过*符号来操作指针内存区域上所储存的地址所指向的对象。这是唯一的区别

int num=1;在栈空间上有一个4字节大小的区域,别名为num, 上面的值是1,假设区域首地址是0x00012;
int* p=# 在栈空间上申请一个4字节大小的区域,别名为p。上面的值是0x001。区域本身的首地址假设是0xff11;
int**p1=&p;在在栈空间上申请一个4字节大小的区域,别名为p1。上面的值是0x123。区域本身的首地址假设是0x456;

double *p2=malloc(size of(double)):分三步来理解
1.在堆空间中申请了一个8字节大小的内存区域,假设首地址是0x0012;
2.double *p2=NULL。在栈空间申请了一个4字节大小的内存区域,别名为p2,区域上的值是一个地址,目前指向NULL,即000000;
3.指针赋值指针。将堆空间申请的内存首地址赋值给p2,即p2上的值变为了0x0012.
image.png image.png

内存的图形化表达

int a=4;
int*a1=&a;
//二级指针
int ** a2=&a1;
int b=9;
int* b1=*b;
image.png
a=b;
a1=b1 ;

赋值操作 可以理解为将目标内存的数据 拷贝 到对应的内存中,即将b区域内存中的9拷贝到a区域中,b1区域中的0xff12 拷贝到 a1区域中。


image.png

结构体的内存表现

struct MyStruct
{
    int age;
    char* name;
};


void main() {
    MyStruct my;
    my.age = 18;
    my.name = "reborn";
}
image.png

相关文章

  • 指针、变量、结构体的内存理解

    指针也是一种数据类型 ,在内存当中,代表一块4字节大小的区域(32位操作系统),这个区域存的值是一个地址。跟int...

  • Golang 指针和结构体

    Golang 指针和结构体 于c语言相同,go中也有指针和结构体的概念。指针表示变量的内存地址,结构体用来存储同一...

  • Day10

    指针 指针与函数 练习回调函数 结构体 基本概念 结构体变量初始化 定义结构体变量 结构体变量作用域结论; 和变量...

  • C语言-5、结构体

    写法一 写法二 写法三 结构体指针 结构体指针 与 动态内存开辟 结构体的数组 结构体与结构体指针 取别名 取别名...

  • 42_内存操作经典问题分析二

    1. 常见内存错误 (1) 结构体成员指针未初始化——野指针(2)结构体成员指针未分配足够的内存——越界(3)内存...

  • Go 简明教程 三步走 中级篇

    GO 数组、指针、结构体 数组 认识指针地址和指针类型 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的...

  • ndk-基础知识

    数组和指针,数组指针,指针数组 结构体 内存对齐 内存对齐 结构体大小 S5DUD10BN083MHEJEX7TP...

  • go day05 结构体

    结构体 1.结构体的初始化 2.结构体指针变量的初始化 3.结构体成员的使用:普通变量 4.结构体成员的使用:指针...

  • C语言里的循环链表

    定义几个结构体,每个结构体里面包含俩个成员,一个整型变量,一个指针变量。让一个结构体里的指针变量指向另一个结构体...

  • C基础-数组指针操作、内存开辟、函数指针和结构体

    数组指针操作的常用几种方式 内存开辟 静态开辟 *动态内存开辟和释放 函数指针(常用于回调) 结构体、结构体指针别...

网友评论

      本文标题:指针、变量、结构体的内存理解

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