地址 、 指针

首先:要理解 2 个概念:

<1> 地址-- & 指内存地址,在内存每个字节都有一个数字的编号。就像大学宿舍,比如:401、402、403,每个宿舍都有一个门牌号。

<2>指针 -- *指针是一个变量,用来装 “地址”。

[注释]指针是地址 变量,地址 是指针常量(因为门牌号是常量嘛!)。

----------------------------

1、先让我们看一下下面的例子:

1.1交换变量 a, b 的值,用函数如何实现?
地址 、 指针_第1张图片
值的交换.png

1.2 、那想要改变a 、b 的值呢?

#    1.2.1    答:用 指针。只是在变量名称前添加一个“ * ”,和变量 地址 " & ".
地址 、 指针_第2张图片
使用了指针.png

看打印结果,是不是,很神奇!!!

其实,原理行简单! --- 核心是: 指针指向了谁,它就可以拿到谁的值或修改值(内容)!

(就像,你大学入学的时候,通知书上标记了你的宿舍在哪栋,宿舍的门牌号是多少,你根据这个信息,也就是 “指针” ,找到了你的宿舍了。。。。。然后呢? ???? 当然是 打扫卫生、铺床等,也就是 “ 赋值 或 修改值 等!喽!”)

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张图片
指针.png

-----------

3.0 你是不是还有疑问?

好吧!我知道这个疑问:

<1、>如何通过 指针 访问 所指向的内容?

答:通过 *p 来访问咯!(p是可以改变的)

int *p = &a;
p = a;
或 p = &a;
(不能)
p = &a;

<2、>能再说明白点吗?

答: *p 就是找到地址,它的地址是p 值的 字节。也就是说取 *p个字节,得到一个内存空间,说白了:就是p 指向的变量空间。

-----》 给个赏,不然给个 赞也好啊!

你可能感兴趣的:(地址 、 指针)