VsCode调试C/C++代码,如何查看指针内存地址

目录

安装Hex Editor插件

查看内存地址必须在调试下进行 

点击指针变量右侧图标,即可打开内存地址面板(右侧红框)

调整行字节展示数量

最后附一下我对指针地址的一些解释


安装Hex Editor插件

VsCode调试C/C++代码,如何查看指针内存地址_第1张图片

查看内存地址必须在调试下进行 

执行调试走到return行VsCode调试C/C++代码,如何查看指针内存地址_第2张图片

点击指针变量右侧图标,即可打开内存地址面板(右侧红框)

VsCode调试C/C++代码,如何查看指针内存地址_第3张图片

此时就可查看该地址内存空间的信息,这里该地址存放的是数字10,也就是十六进制0A,鼠标悬停在0A的地方可以看到十进制信息。

VsCode调试C/C++代码,如何查看指针内存地址_第4张图片

调整行字节展示数量

点击设置,我这里调整为4,比较便于观察

VsCode调试C/C++代码,如何查看指针内存地址_第5张图片

出现如下面板,修改为4即可

最后附一下我对指针地址的一些解释

/*
 * @Author: e-Hai.Zhang1 [email protected]
 * @Date: 2023-10-12 15:38:43
 * @LastEditors: e-Hai.Zhang1 [email protected]
 * @LastEditTime: 2023-10-12 16:07:51
 * @FilePath: \pi-webviz-portal\src\core\helper\demo.c
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include 

int main()
{

    /*
        内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
        所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
        为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
        指针变量的大小取决于地址的大小
        32位平台下地址是32个bit位(即4个字节)
        64位平台下地址是64个bit位(即8个字节)
     */

    int a = 10; // 向内存申请4个字节,存储10 (num的地址是4个字节中的第一个字节)
    &a;         // 取地址操作符
    /*
        将变量a的进制存入p,p就是指针变量,注意需要加 * *表示p是一个指针变量,int表示p指向的对象是int类型(a是int类型)

        指针又叫地址,而指针变量是存储指针(地址)的一个变量,指针变量就是用来存放地址的
        当将一个 int 变量的指针地址赋值给一个指针变量时,所赋值的是 int 变量中的第一个字节的地址。在大多数计算机系统中,指针的值表示的是所指向内存的起始地址。
        由于 int 变量占用4个字节,因此指针变量将保存 int 变量中第一个字节的地址
     */
    int *p = &a;
    /*
        %p专门打印地址的
        000000b2131ffb74 十六进制表示的指针变量 000000b2131ffb74(变量a的内存起始编号,同指针,同地址),它表示的是一个内存地址。
        0A 00 00 00 是一个16进制的整数常量(即4个字节,每个字节都用16进制来表示),表示的改地址存储的数字是十进制的数值 10。
     */
    printf("%p\n", p);

    /* 
        *指针变量 解引用操作符,意思是通过p中存放的地址,找到p所指向的对象(等于10的a),*p就是p指向的对象,即 *p == a
        如下,a由原来的10变为了20
     */
    *p = 20;
    printf("%d\n", a); // 20


    return 0;
}

注:我这里多次指针地址不同,是多次调试造成的,因为每次调试变量申请的地址都是不固定的,仅供大家参考如何查看内存地址

你可能感兴趣的:(C语言,vscode,ide,编辑器,c语言)