首页
社区
课程
招聘
[旧帖] [原创]我也说说指针 0.00雪花
发表于: 2016-1-4 21:29 1821

[旧帖] [原创]我也说说指针 0.00雪花

2016-1-4 21:29
1821
面向的阅读群体:初识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直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 106
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=laiwenjie;] 数组名就是地址,就是指针,学好指针第二大难关就是要深刻理解到这一点。
    a[],其中a就是地址,记住就好,这个没法解释,规定。[/QUOTE]
数组名特指数组首地址,是常量,不可变,不同于通常所说的指针。
比如:
int a[4];
int *p ;
p = a;
p ++;     //正确
a ++;     //错误
2016-1-5 10:11
0
雪    币: 23
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=wenbuxiu;1410070]数组名特指数组首地址,是常量,不可变,不同于通常所说的指针。
比如:
int a[4];
int *p ;
p = a;
p ++;     //正确
a ++;     //错误[/QUOTE]

嗯嗯,说点对,谢谢指正
2016-1-17 10:26
0
雪    币: 106
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
客气了。互相学习而已。其实你本没错,只不过这是C语言为了简化编译器而作的约定,算不得什么。
2016-1-17 11:38
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错,不错
2016-1-17 12:17
0
雪    币: 23
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
欢迎新朋友加入看雪大家庭
2016-1-17 16:21
0
游客
登录 | 注册 方可回帖
返回
//