【C语言】深入理解指针(一)

目录:一、内存与地址

                1.1、什么是内存?

                1.2、什么是地址?

          二、指针变量和地址

                2.1、取地址操作符(&)

                2.2、什么是指针变量?

                2.3、拆解 

                2.4、解引用操作符(*) 

                        2.4.1:什么是解引用操作符?

                        2.4.2 为什么要使用解引用操作符?

          三、谢谢观看

只要讲指针,就离不开内存。指针是用来访问内存的。

一、内存与地址

引子:来类比一下生活中的房间,为了方便管理,我们把一栋房子分成一个一个的小房间,而为了查找房间能够快速方便,我们把房间进行编号。

1.1、什么是内存?

内存是计算机中的一个硬件单元,计算机上的CPU处理数据时,数据从CPU上读取,处理后的数据也会放在内存中。

为了方便管理,我们把内存划分成一个个的内存单元(相当于划分房间),每个内存单元为1个字节(byte)。1byte=8bit(比特位)

1.2、什么是地址?

就像为了准确找到房间,我们将房间编号,那么,我们为了方便查找内存,我们把每个内存单元设置一个地址,这样,CPU就能快速找到一个内存空间。

在生活中,我们把门牌号叫做地址;在计算机中,我们把内存单元的编号叫做地址;而在C语言中; 把地址取了个新的名字——指针。

也就是:内存单元的编号=地址=指针

二、指针变量和地址

2.1、取地址操作符(&) 

#include <stdio.h>
int main()
{
	int a = 10;
	printf("%p",&a);//&a  取出a的地址
	return 0;
}

创建了一个整型变量a,为a在内存中申请了4个字节(整型)的空间。每个空间都有其对应的地址,我们&a,取地址取出的是a所占4个字节中地址较小的字节的地址,即第一个地址

2.2、什么是指针变量?

指针变量:用来存放地址的变量。下图中以 p 为指针变量

注:指针——是地址

       指针变量——存放地址的变量

2.3、拆解 

可以这样理解

整体表示:取出a的地址存放到指针变量p中

p: 是一个变量,用来存放指针

*:说明p为指针变量

int: 说明p指向的对象是int类型

变式理解:

char  ch = 'w';

char* pa = &ch;  // 取出ch的指针并存放在指针变量pa中,其中pa指向的对象是char类型

2.4、解引用操作符(*) 

2.4.1:什么是解引用操作符?

解引用操作符:通过指针变量中存放的地址,找到其指向的空间。(通过解引用来修改变量的值)

 解引用操作符起到能间接修改变量值的作用。

2.4.2 为什么要使用解引用操作符?

很多同学可能有疑问:直接修改变量a的值不就完了,为什么还要多此一举来个解引用间接修改?

正经讲法:把a的修改交给了p来操作,这样对a的修改就多了一种途径,写的代码就更加的灵活。

举个不恰当的例子:

法外狂徒张三,是一个黑社会的大哥,他想收拾一个人,但不方便亲自动手,就派手下李四来动手。最后达成了“收拾一个人”的目的,但用的途径不同。

说回这道题:

你直接对a进行修改,令a=2,就相当于张三亲自动手

用指针来令*p=2,就相当于张三不方便动手,派李四来动手

就是这么个意思。

三、谢谢观看(鞠躬.jpg)

  • 34
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值