黑马程序员技术交流社区
标题:
入门C指针 记住这句话
[打印本页]
作者:
doudou33420
时间:
2014-11-6 03:35
标题:
入门C指针 记住这句话
本帖最后由 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); 同上
感觉如何, 通过上面的例子,拿出这句话是不是顺多了 有没有感觉"矮油 不错 这个叼";
二半夜的 纯手打 因为自己指针学的太马虎, 看指针的时候也是绕的头疼
总结点自己经验给处在同一阶段的朋友互相学习
管理我这可不是灌水. 别给我移走啊 顺便再给点
技术分
啊
作者:
chri_liu
时间:
2014-11-6 08:59
感谢总结分享
作者:
励志入黑马
时间:
2014-11-6 09:31
感觉还是很绕
作者:
doudou33420
时间:
2014-11-6 12:04
励志入黑马 发表于 2014-11-6 09:31
感觉还是很绕
把这句话记住就好多了
作者:
大米米
时间:
2014-11-6 12:56
一连串的PPP
作者:
枫叶路过123
时间:
2014-11-7 00:33
谢谢 分享和总结 加油呀
作者:
从今以后
时间:
2014-11-7 06:40
矮油 不错 这个叼 (wtf我也是醉了。。)
作者:
caozhichao
时间:
2014-11-7 09:14
还是会有些绕
作者:
doudou33420
时间:
2014-11-7 09:28
caozhichao 发表于 2014-11-7 09:14
还是会有些绕
理解这句话可以帮你理解指针呢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2