前言
刚学习指针的时候,就是觉得这个什么指针,什么地址,什么内存空间吓死宝宝了,听别人那么一说要被吓到从一楼跳到二楼去了。但是,在理解之后发现,指针就是如同你平时上某宝pdd里面的快递一样平平无奇,知道了快递后你就明白了什么是快递单号,指针你就明白了!
一、教小学生手撕内存地址
1.内存地址就是好比一个大的顺丰快递柜子,里面有很多的可以存放快递的小盒子,创建一个变量a就是好比如在快递柜子里面存放了一个快递a
2.ok理解就是如此轻松惬意!
- 每个变量都是内存里的快递柜格子
- int a = 10; 就像:
柜子编号(地址):0x7ffd1054(每次运行随机)
存放的快递(值):10 - 查看快递柜编号:printf(“地址:%p”, &a);
二、指针就是快递单号(定义)
int *express_order; // 声明一个"快递单"(指针)
express_order = &a; // 把快递a的快递单号写在单子上
printf("包裹位置:%p\n", express_order); // 输出0x7ffd1054
printf("拆开包裹:%d\n", *express_order); // 输出10(*是拆包裹动作)
- 注意别干出来野狗指针
- 也就是说一个快递单号对应好一个快递
三、指针就是强哥的老莫(应用)
- 场景1:借刀杀人,我强哥不亲自动手
void changeValue(int* order)
{
*order = 666; //以快递a的快递编号来间接偷偷往快递a里面加馒头
}
int main()
{
int a = 10; //快递a里面放了10个馒头
changeValue(&a); //我要得到快递a的快递单号order
}
- 场景二,往后增减
四、老莫我要吃鱼!(例题)
#include <stdio.h>
int main()
{
int wallet = 500; // 钱包里有500元
int *money_order = &wallet;
printf("钱包地址:%p\n", money_ptr);
printf("实际金额:%d\n", *money_ptr);
*money_order += 100; // 偷偷加100元
printf("现在有:%d元", wallet); // 输出600
return 0;
}
结语
- 都说了小学僧都可以学会啦,洒洒水,撤啦!
- 下期预告:《用指针玩转字符串——像操作乐高积木一样》