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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© doudou33420 中级黑马   /  2014-11-6 03:35  /  1399 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 doudou33420 于 2014-11-6 13:13 编辑

一句话  p就是地址,  *p就是p中地址上的值
例:
  1. char arr[] = "abcde";
  2.         char *p = arr;
  3.         //数组名 代表首元素的地址.  //初学者请注意分清 arr[0] 与 &arr[0]
  4.         printf("%s\n",p); //p 就是地址-----  首元素地址,  会一直输出遇到\0停止
  5.         printf("%c\n",*p); //*p 就是p中地址上的值  ------- 首元素地址上的值为'a'  故输出'a';
复制代码
思考指针的问题 很容易产生疑问,  也很容易重新推翻之前思考得出的定义.  
所以很容易弄迷惑 含糊不清到底怎样才是对的
记住这句话  对于刚入门指针  影响很大..  很多指针问题 哪怕你没弄懂 都可以从这句话推出来;
例2: 指向指针的指针
初学者听这名字就感觉很绕 好厉害的样子,

  1.         char arr[] = "abcde";
  2.         char *p = arr;
  3.         char **pp = &p; //指向指针的指针 pp    &p是 指针p的地址
  4.         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);  同上
感觉如何, 通过上面的例子,拿出这句话是不是顺多了 有没有感觉"矮油 不错 这个叼";
二半夜的 纯手打 因为自己指针学的太马虎,  看指针的时候也是绕的头疼 总结点自己经验给处在同一阶段的朋友互相学习
管理我这可不是灌水.  别给我移走啊  顺便再给点技术分

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

8 个回复

倒序浏览
感谢总结分享
回复 使用道具 举报
感觉还是很绕
回复 使用道具 举报

把这句话记住就好多了
回复 使用道具 举报
一连串的PPP
回复 使用道具 举报
  谢谢 分享和总结  加油呀  
回复 使用道具 举报
矮油 不错 这个叼 (wtf我也是醉了。。)
回复 使用道具 举报
还是会有些绕
回复 使用道具 举报

理解这句话可以帮你理解指针呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马