本帖最后由 doudou33420 于 2014-11-6 13:13 编辑
一句话 p就是地址, *p就是p中地址上的值
例:
- char arr[] = "abcde";
- char *p = arr;
- //数组名 代表首元素的地址. //初学者请注意分清 arr[0] 与 &arr[0]
- printf("%s\n",p); //p 就是地址----- 首元素地址, 会一直输出遇到\0停止
- printf("%c\n",*p); //*p 就是p中地址上的值 ------- 首元素地址上的值为'a' 故输出'a';
复制代码 思考指针的问题 很容易产生疑问, 也很容易重新推翻之前思考得出的定义.
所以很容易弄迷惑 含糊不清到底怎样才是对的
记住这句话 对于刚入门指针 影响很大.. 很多指针问题 哪怕你没弄懂 都可以从这句话推出来;
例2: 指向指针的指针
初学者听这名字就感觉很绕 好厉害的样子,
- char arr[] = "abcde";
- char *p = arr;
- char **pp = &p; //指向指针的指针 pp &p是 指针p的地址
- char ***ppp = &pp; //指向#@@!!&$^@! (what the fuck)
复制代码
不难看出只是多了两层引用关系而已, 但乍一看 不太好理解这么多***的作用
我们来借用这句话 p就是地址, *p就是p中地址上的值
pp里面就是p的地址 *pp里面就是p里面的地址(arr的地址) -----这时我们就能输出arr了 printf("%s",*pp)..
----------上面之所以输出要用*pp而不是用pp是因为, pp里面放的是p自己的地址 p里面才是arr的地址 而*pp里面是?
ppp里面就是pp的地址*ppp里面就是pp里面的地址(p的地址)**ppp里面就是p里面的地址(arr的地址) -----让我们来输出arr吧 printf("%s",**ppp); 同上
感觉如何, 通过上面的例子,拿出这句话是不是顺多了 有没有感觉"矮油 不错 这个叼";
二半夜的 纯手打 因为自己指针学的太马虎, 看指针的时候也是绕的头疼 总结点自己经验给处在同一阶段的朋友互相学习
管理我这可不是灌水. 别给我移走啊 顺便再给点技术分啊
|