面向的阅读群体:初识c语言
我发现要简单的就把指针讲明白,真的好难啊!写了两小时,改了又改,最后决定,重写。
这是我想到的最简单的办法了!
(1)
如果:标准间=100平米
int a=12;
//解释,划分了一个int的空间,标识a,这个空间存了12这个数
标准间 清水居=一张床;
//解释,划分了一个标准间的地方,我给这个起名(标识)清水居,这个地方我放一张床进去。
delete(a);
//我想通过一个函数把a的东西删了。
//实际上呢,计算机通过a这个标识,找到12这个数,复制这个数,化分一个空间,存进去12,删除12.
//原来的那个地方没有动。
清空屋子(清水居);
//我想把清水居这个屋子清空,调了搬家公司
//这时,搬家公司,自己买了一个同样大小的房子,里边按照清水居的配置放置东西,然后搬出这个房间的东西。
//此时,清水居的东西还在那。
delete(&a)//&为取地址符
//把a的地址给了函数,函数根据地址找到里边的数(*p)这里的*号,就是取的意思。
//理解指针先要理解*在不同地方出现的意义,带有类型出现时,它只是表示什么什么是指针。
//单独跟变量出现,表示取出地址数据的意思
//也就是说,我们通过地址,找到数,操作,这样就可以改变
清空屋子(XX街道122号)
//搬家公司,根据地址到我的清水居,把我的房间清理了
从上边可以看出,要通过调用函数,对你传进函数里的东西改变,只能把这个东西放的地址给函数,不然函数
操作的只是你传进来的数据,是数据的拷贝。记住,这时 ,数据虽然一样,但存的地方不一样。而你传进去地
址,再根据地址找到值,操作,就是直接改变。
(2)
数组名就是地址,就是指针,学好指针第二大难关就是要深刻理解到这一点。
a[],其中a就是地址,记住就好,这个没法解释,规定。
(3)
多级指针,**p。
理解这个问题你可以想想藏宝图,你到一个地方,给你提示,说要到另一个地方找,当你找到另一个地方
,那又说要到别的地方找。。。。
宝藏实际地点在A地方放着,A地方的地址在B地方放着,B地方的地址在c地方放着。。。。
这就是多级指针。
(4)
数组指针,函数指针,指针函数,指针数组
是不是很乱,你只要记住一点,谁在最后,谁就是实质,谁在前边,谁就是修饰
数组指针 实质:指针 修饰词:数组 表达意思:一个指针,这个指针指向一个数组
函数指针 实质:指针 修饰次:函数 表达意思:一个指针,这个指针指向函数
指针函数 实质:函数 修饰词:指针 表达意思:一个函数,返回值是个指针
指针数组 实质:数组 修饰词:指针 表达意思:一个数组,数组元素是指针。
数组指针:int (*p)[]; 函数指针:int (*fun)();
指针函数:int *fun(); 指针数组:int *p[];
我一般是看小括号,小括号括起来的,你不用想,肯定是实质是指针,相反就不是。
(更多的就是靠自己多练了)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课