A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王绍明 中级黑马   /  2014-9-1 18:53  /  1439 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

无论是学C语言,还是学习OC语言,遇到最大的难题就是指针,根据老师讲的学习了一下,感觉没有从根本上理解他,运用它,在写后面OC语言一些调用上用得不好!对于指针请大家说一说自己理解?越详细越好,谢谢!

5 个回复

倒序浏览
下载的视频里有一个pdf文件 专门讲指针的  你看了么?
回复 使用道具 举报
视频中有详解的
回复 使用道具 举报
指针是个对象,这个对象本身有一个地址,同时,这个指针对象可以引用一个地址,所以 int * p就是一个整型指针对象,他的值只能是地址。 int i=0;int * p = &i ,就是整型指针p引用了i的地址。也可以嵌套引用 int i=0; int *p=&i;int **p1 = p; 就是定义一个引用指针的指针。 *(*p1) = i;函数指针  void *(*p)()  可指承指同类型函数的地址,函数 int s(){return 0;} 函数指针 int(*p)()= s ; p();
回复 使用道具 举报
我这边给你打个比喻,就比如我们去拿一样东西
而拿这个东西呢,需要两个步骤
1  这个东西所在的地址  2 根据地址去拿它
其中 地址呢,就是指针 ,而拿它呢,就是根据这个地址去拿它,也就是访问指针
比如 c的指针
int   a = 10;   int *b  = &a,int c = *b;
这边呢,我们拿a这个值,怎么拿呢?
1 首先得获得这个a地址,也就是&a
2 然后呢,把这个地址给指针呀,好让它找拿呀,也就是  int *b = &a,把a的
地址给了指针b
3 访问指针*b,也就相当于,指针根据这个地址拿到了a的值,*b 也就相当于10了
4 最后了 int c =*b ,也就相当于 int c = 10;
关于 指针的写法,有常见的两种
比如  a[0],*a
看到这里 ,你是不是感觉a[0]的写法,是不是和数组和字符串很像,其实它们的确有很多
相像的地方;
比如 int a[]={1,2,3,4,5}; int  *b = a;
1   对于,数组来讲,它的名字就是它的首元素地址,我这边直接将数组的首元素地址给指针,当然也可以这么写
     b=&a[0],这个地方也是将首元素地址给它,但一个加&,一个没有,是因为数组名本身就是地址,而
    a[0]不是地址
2  然后 *b就是根据首地址获得这个地址所有的东西,也就是1,或者你*a,数组名是地址嘛,所以访问它也是可以的
3  然后*(b++),或者b[1],就是获得在原来地址的基础上加上4个字节,访问了第二个元素的地址,得到
    2,b[2]访问a第3个元素,b[3]第四个元素
4  结论    b[0]=  a [0],b[1] = a [1],b[2]= a[2]
5 所以说,指针和数组字符串,是有千丝万缕的关系,而只要指针用上[]这个中括号,连访问符号*都省了

回复 使用道具 举报
多看PDF笔记 比较能快速理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马