黑马程序员技术交流社区

标题: 指针 [打印本页]

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

作者: 七年级生    时间: 2014-9-1 19:53
下载的视频里有一个pdf文件 专门讲指针的  你看了么?
作者: ❤如止水之絕境    时间: 2014-9-1 21:58
视频中有详解的
作者: 陨石    时间: 2014-9-1 23:18
指针是个对象,这个对象本身有一个地址,同时,这个指针对象可以引用一个地址,所以 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();
作者: 小月格子猫    时间: 2014-9-2 00:05
我这边给你打个比喻,就比如我们去拿一样东西
而拿这个东西呢,需要两个步骤
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 所以说,指针和数组字符串,是有千丝万缕的关系,而只要指针用上[]这个中括号,连访问符号*都省了


作者: 冯大卫    时间: 2014-9-2 00:25
多看PDF笔记 比较能快速理解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2