1. 指针基本介绍

印度小哥讲解的指针, 真的很好, 这个附上链接:
https://www.bilibili.com/video/BV1bo4y1Z7xf/?spm_id_from=333.999.0.0

1. 内存的概念和变量存储

在内存中, 每一个字节都是有一个对应的编号. (一个字节占用了一个位置).

在这里插入图片描述

1.1 变量的存储

int a;  
char c;
a = 5;
...
...
...
a++;

从下图中可以看到, 给 a 分配的内存地址有 4 个占据的是 204 ~ 207, 起始的地址是:204. 然后给 a 赋值为 5, 所以在 204 ~ 207 中以二进制的形式存储 5 ,
然后执行到 a++, 这里先找到 a 的起始地址, 然后修改 a 的值, 改为 6.

c 分配的地址有 1 个, 占据的是 209;

在这里插入图片描述

2. 指针的概念

指针:指针是一个变量, 里面存放着另一个变量的内存地址.

指针可以指向另一个内存地址 (指针中存放的是另一个变量的起始地址), 也可以修改指针, 比如下图中:指针 p 可以指向 a , 也可以指向 b.
而且指针也是有内存地址的(也占用空间),

2.1 指针的表示方式

下面这段代码表示 p 是一个指向整型的指针变量.
(p 是一个可以存放整型变量的地址的变量).

int* p;

在这里插入图片描述

2.2 用图模拟表示指针的创建

int a;
int* p;
p = &a;
a = 5;
print p;  // 204, 因为p中存放的是“a”的地址.
print &a; // 204, 因为“a”的地址是“204”.
print &p; // 64,  因为“p”也是会占用空间的, 所以这里是“p”的地址.
print *p; // 5,   因为可以通过“解引用”操作符找到“p”中存储的地址对应的值.
*p = 8;   
print a;  // 8,  在上一行代码中, 通过“*p”对于“a”进行了修改.

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值