00:00
那么有了过后,接下来呢,我们去加深指针的理解啊,那么我们去做四个小实验,小实念怎么做呢,对吧,好,我们呢。四个小时。来这个地方。好,然后我们加深。指针和理解注意啊,指针的话说的面试官他肯定问了对不对,之前有位同学就问到指针啊。他说你大学学了这么多年是吧,你说一下指针对不对,好,那哥不能就会懵了知道吧,所以的话呢,你要小心了,怎么是指针对不对,现在你知道什么是指针嘛,指针就是内存地址地子又是指针是吧?指针有什么好处,从来没讲对不对,好。
01:04
I好,等于100。好,然后呢,你的都行,把它静一点项嘛,静一静嘛,对不对,好,那有了后在我们地方里面去取它什么,取I吧,好。那这个时候有了,过后我们做第一个实验,实验听一听啊。好在这种地方里面呢,假如说如果修改我们的I值,我们的P值有变化吗。啊好大家好,我把I呢修改一下,我先是我这样,我先把之前大平。那么修改我们的I值。修改I值前。
02:09
的钱,然后P。这词。是多少?好,注意P的值,它是一个内存地址。是不是内存地址的话,我们打印百分之多少。百分之多少,去打印地址啊,百分号。井号X吧。说明你把非洲换行对不对。好,然后有了过后呢,把这个P把它打印出来这问题吧。好,接下来再把这个改为200,好,那么再去打一下修改。后单词。好。或者这好,那也是打P。
03:00
也是打P,好,我们去把它运行起来。编译通过了执行,大家发现没有,是涛声依旧啊,是没变。是不是?好,为啥呢?对不对,好。我们在这个地方里面的话呢,为什么呢,对不对。好,去,再去画个图。咱们这个地方里面注意了。在这个地方里面,在我们这个地方里面的话,大家看一下。这是一个。A方法,那么它自己定义了一个什么类型呢?I类型是什么类型的类型?它内存地址假如是1000H,它里面存放的值是什么?700啊好,一百一百好,那这个时候又定义了一个什么。又定义了一个P变量,里面是什么类型的指针,然后内存地址假如是2000H对吧,那里面它存放的值是多少?
04:12
是是多少,是1000H啊,注意是1000H。好,那假如我现在。把这个。这个时候把我们的这个打印出来,修改前的值打印出来是打印PP,这个时候P它存放的地址是1000呐,好,所以打1000,当然是打1000。这是1000对吧,1000H中间是1100,那接下来I修改。GY是多少?200,他值变了。但是我再去打自己的折,跟他有毛关系啊?懂我意思了吧?没啥关系,明白了吧,好。没关系的,对不对,好,这是一种第一个时间,第二个时间,第二个时间。
05:09
就是调过来。如果修改是PG,能够会有变化吗?啊。好。好,我们先把上面的注释掉。注册掉。阻塞掉好,那么如果修改P好了,修改P前的I的值。然后呢?I的值,好,那注意了。那么在这个地方里面I的值我是就百分号多少了。D,这个是多少I。这个也是百分号多少D,就是说哎,好,那P的话,我们修改P的话,它是它是等于地址值吧,好,我在在地址时,我去定义一个in特类型GS等于。
06:10
200,那这个时候是取谁的地址啊?好,这个时候去大家看一下,你们觉得I有变化吗?好,看到也是一般没啥变化,为什么呢。对不对,没啥关系。对吧,好,那么为啥没关系呢,画图。好,前面这个地方都都都都都不变啊,我们可以给大家回退回退再去画一下。啊。好,那么P的话,对应的这个这个没变对吧。好,这个没变好,接下来我们看一下。这个代码执行过后就是这个情况,这个代码执行后是这么情况,这没问题吧,啊,接下这行代码。这个过后,这个地方里面定义了一个什么变量啊,接变量定的类型,这个例子假如是3000。
07:02
H。好,那么这个时候它存放的。地址就是它存放的地址,假如就是粘进去,那么它里面存放的值是多少?200。两百两百,那么也就是说,当这个代码执行过后啊,P这个时候,P这个时候它的地址变了吧。变多少?当这个代码执行过后,它的地址变多少了?啊,3000H这哥们只对弟子感兴趣对不对,只对弟子感兴趣对吧,就像有些人,他只对男人感兴趣。啊好,然后有的客户他只对地址感兴趣,那也就是说在我们地方人工打印的时候,打印I。I有变化吗?
08:00
是没有动啊,I对应的值数依然是一涛声依旧的100啊,好,那么现在明白了吧,好,就这么回事,好,那我们再换一下。这是第二个实验。好。那如果我按照这个时间进一步扩展一下。第三个十年,然后如果改这个,如果新批有变化吗。好,那再看好打开。打开。打开好改的值,新P的值,新P的值好,那修改前I的值,注意修改前的新P的值,它是一个。芯P里面对应的是int就行了,就不是地址啦,好,那加上一个什么星,这里又是一个星,这是一个什么白花多少D,好,那么也就是I改过后之前是100大,再看一下密起来。
09:11
变了吗?好,为什么呢?咱们又画一个图。还是对这个图来来来来来做。好啊,这里面的话呢,这个是不要的,对吧,我们就再对对当前这个情况呢,再做个图。好,这个的话呢。橡皮擦。好这样子,当这个I等于是100,然后P过后是这样的一个情况,对吧,然后接下来这个地方看看到I这个时候负值变成多少了。多少?是不是200啊,200变200了。然后这个时候新批,新批是什么呢。信不是就把这个P对应的地址的地址的值取出来变成多少了。
10:07
输200了。好,那这个时候我们去运行的话,你看就是200了,明白了吧。好,再来一个十年啊,我们就。把它复制下。那这个第二个事件进行拓展。好,那么上面这部分呢,阻射掉阻射掉阻掉,好,那么第四个十年,四个十年,如果心机。的值,如果需要形容值I有变化吗?好,注意我修改新P前的值I变化吗?好,这个I,那这个时候我们把新P改了。新批。那么我CP对应的是具体一个值,我就把它变成是200。这个是不需要了,不需要了,那么在这个地方里面注意了。
11:04
这个时候改新批后的值了。好,这个I值有什么变化,你觉得有变化吗?好,这行看没有变化了吧,好,那也就是他直接把里面它对应的地址那值给给变了,好我们再看一下这张图。首先这个地方里面我们又从头开始,对吧,好。大家看一下,在这个地方里面定下一个100日例子,和前面之前是一样的,都不变对吧,那在这个地方里面注意关键是这个代码,一定要理解这个代码的意思就是。把我们批对应的地址对应的值修改为200。是刚才一样啊。200。又200,那两百的话,再我们再去打印的话,发现就变了。明白了吧,现在大家对指针还有心。左边有个心,就是一个P的左上方有个心,就代表去取它地址的对应的值。
12:06
是很闹啊。就像我们小时候唱一首歌,爸爸的爸爸是爷爷,妈妈的妈妈是外婆啊,妈妈,妈妈的妈妈不是外婆吗?啊,我们南方叫做外婆,北方的叫老啊,都是一个意思,那么同样取这个内存地址的对应的值是不那么取这个内存地址对应的值是和这个F有点类似啊,那其实我们小时都写过写过指针了,对不对?好。那同学们这一块呢,就是我们的一个指针的一个加深理解好,那指针加深理解过后,同学们大家呢,要去理解这个东西。
13:01
Comp。第一个。这是文字的上面要理解了啊,指针和指针变量的关系,注意啊,我们我们大多数情况下讲的指针,它包含两个含义,一个是指针和针变量。那么注意啊,指针就是地子,地子就是指针。好,好好的读这句话的时候再思考一下。地址就是内存单元的编号。大家还看到我们的工具吗?它的地址就是一个编号啊,刚才我们组合那个游戏啊,有印象吧。有点。指针变量是存,注意指针变量是存放地址的变量,刚才我们画图也知道了哦,是指针变量,是指针变量P存放的是地址变量,对不对。啊,指针和指针变量是两个不同的概念,但是注意,通常我们叙述把指针变量简称为指针,实际上的含义不一样。
14:01
注意含义在哪里不一样呢?有一个强调是具体,有个强调是可变,比如说指针里面存放100,这个时候所讲的指针呢,是一个是一个地址,而且是一个具体的地址。但是指针里面传输地址,这个时候指的强调是一个可变。是很辣吗?对不对,你看指针里面存100,这个100就具体的地址,然后呢,这个时候指针。指的是一个具体地址,但是啊是这是一个强强调一个具体,那么指针里存放的是地址,指针里存放了100字,这这是一个也是指针啊,这是强调的是什么呢。强调是地址是一个聚体值,然后指针里面存放的是地址,这地址可以引用不同的东西啊,所以呢,这个时候所指的指针就是指针变量可变的。啊,很闹吧,所以我们在大学里面就闹不出来对不对,好好,那接下来为什么要指针,注意指针有什么好处啊,因为大家呢,这个可能以后工作啊,要接触生意开发也啊,这个可能以后咱们班可能有过吧,会有可能有机会将来你转行对吧,说明我就要搞C是吧,有可能。
15:21
指针的重要性,指针可以访问硬件对吧,比如说我们显卡的绘图可以直接访问硬件。好,同学们,你们知道为什么很多驱动就是C开发吗?就是C啊,它可以直接驱动硬硬件,知道吧,叫做硬件给操作硬件,所以呢很多就是其实可以这么说,一定变C,假如你要学嵌入式开发,他们教的就是什么C和C加加。必须学嵌入式啊,我我的有朋友就是做嵌入丝。好,快速快速传递数据指针表示地址,注意后面我们会后面我们会做一个对数组进行操作。
16:01
你存进去后,你都不用接收了,特别快啊,直接拿到他的指纹啊。它它它可以返回一个以上的值,返回一个数组或者结构体啊表示它可以表示复杂的数据结构,那比如说我们的恰。恰的指针其实可以表示这么算啊。好方便处理字符串,但是恰的话,像这样的话,在我们Java里面是有一次进来的表示了就感觉很简单,但是我跟你说。在计算机这语言刚发现出来都用的是010101是不是?对不对,用开关开关去处理,所以的话呢,现在计算机的即使还是010101是吧。好,那指针有助于理解面向对象,其实这个指针特别有点类似于面向对象啊,面向的对象,好,那同学们,这是为什么我们要学指针。还有这个星号的三种含义。星号的话呢,第一如果在C语言中,如果两个速度的中间,这个表示一个什么。
17:02
表示数学运算。但是如果是。这个哥们在的是什么?在他的右上方,注意你敲空格也没问题啊,敲空格没问题,如果是这样情况指的是什么?指变量。这没问题吧,我们之前定义的是一个什么子变量,对不对,好。再看一下。那指针运送符就是用来什么?取P的内容,其实就取P的对应的地址在内存中的什么值,那么我们翻译成白话,就是取P对应的地址的对应的值。好,那么的话呢,它的含义就是取批的内容,这内容所指的是什么地址,因为这个哥们存的什么就是地址嘛。好,那取P的内容在内存中的值是对应的值啊。OK,那么它有三个含义啊好,那同学们在我们这个地方里面的话呢,就是指针的一个深入理解。
我来说两句