首先:要理解 2 个概念:
<1> 地址-- & 指内存地址,在内存每个字节都有一个数字的编号。就像大学宿舍,比如:401、402、403,每个宿舍都有一个门牌号。
<2>指针 -- *指针是一个变量,用来装 “地址”。
[注释]指针是地址 变量,地址 是指针常量(因为门牌号是常量嘛!)。
----------------------------
1、先让我们看一下下面的例子:
1.1交换变量 a, b 的值,用函数如何实现?
1.2 、那想要改变a 、b 的值呢?
# 1.2.1 答:用 指针。只是在变量名称前添加一个“ * ”,和变量 地址 " & ".
看打印结果,是不是,很神奇!!!
其实,原理行简单! --- 核心是: 指针指向了谁,它就可以拿到谁的值或修改值(内容)!
(就像,你大学入学的时候,通知书上标记了你的宿舍在哪栋,宿舍的门牌号是多少,你根据这个信息,也就是 “指针” ,找到了你的宿舍了。。。。。然后呢? ???? 当然是 打扫卫生、铺床等,也就是 “ 赋值 或 修改值 等!喽!”)
2.0请看演示:
// 声明变量 (建议:声明变量的时候,最好进行初始化一下,不用问我为什么,好习惯呗!)
int a = 0;
char b = 0;
float c = 0;
int *p = &a; // 表示: 指针 p ,装了变量 a的地址,[也叫 P 指向 a]
char *q = &b; // 表示: 指针 q ,装了变量 a的地址,[也叫 q指向 b]
float *w = &c; // 表示: 指针 w ,装了变量 c的地址,[也叫 w 指向 c]
[再次提醒] 谁(p) 指向谁(a),谁(p)就可以拿到它(a)的内容(值),并且可以修改它(a)的内容(值)!
-----------
3.0 你是不是还有疑问?
好吧!我知道这个疑问:
<1、>如何通过 指针 访问 所指向的内容?
答:通过 *p 来访问咯!(p是可以改变的)
int *p = &a;
或 p = a;
或 p = &a;
(不能)p = &a;
<2、>能再说明白点吗?
答: *p 就是找到地址,它的地址是p 值的 字节。也就是说取 *p个字节,得到一个内存空间,说白了:就是p 指向的变量空间。
-----》 给个赏,不然给个 赞也好啊!