| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4813 人关注过本帖
标题:谁能解释下char *p="abcdef"; 其&p表示什么意思?
只看楼主 加入收藏
zzymoon
Rank: 1
等 级:新手上路
帖 子:82
专家分:1
注 册:2006-9-19
收藏
 问题点数:0 回复次数:4 
谁能解释下char *p="abcdef"; 其&p表示什么意思?
char *p = "abcdef";
在内存中:
p表示什么?
*p表示什么?
&(*p)表示什么?
&p表示什么?















依我实验,p <=> &(*p)是指p这个指针变量自身所处内存地址;
*p是指常字符串"abcdef"所在内存首地址,也即字符'a'所在的内存地址; <=> p[0] <=> *(p+0)
那么&p指什么呢?或者这是个非法引用?



printf("%s",p);
    既然p是指其自身所处地址(A),那里这里%s的功能就是将后面p所在内存中的内容(B)取出来再依此取出来的内容(B)做为内存地址再去寻址一遍,将得到的内容(C)打印出来?
    这里,A和B为地址,C为我们最终要打印的值?
搜索更多相关主题的帖子: char abcdef 
2009-11-05 14:58
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
依我实验,p <=> &(*p)是指p这个指针变量自身所处内存地址;
*p是指常字符串"abcdef"所在内存首地址,也即字符'a'所在的内存地址; <=> p[0] <=> *(p+0)
那么&p指什么呢?或者这是个非法引用?
        LZ解释的很好,那个&p也是这个原理,就是指向那个地址的指针。不是非法引用。(不管p是地址还是变量,&p就是指向p的指针,你可以&&&&p,都没所谓,只是没意义的问题),
printf的输出原理我也不太懂,想高手指点下,个人认为就是输出p地址对应该的字符,再输出接下去地址所对应的字符,直到遇到对应字符为 '\0'的地址时才停止输出 ····
2009-11-05 15:17
zzymoon
Rank: 1
等 级:新手上路
帖 子:82
专家分:1
注 册:2006-9-19
收藏
得分:0 
以下是引用lijm1989在2009-11-5 15:17:46的发言:

依我实验,p <=> &(*p)是指p这个指针变量自身所处内存地址;
*p是指常字符串"abcdef"所在内存首地址,也即字符'a'所在的内存地址; <=> p[0] <=> *(p+0)
那么&p指什么呢?或者这是个非法引用?
        LZ解释的很好, ...
还是错了,正确的结论如下:

p <=> &(*p) 指的是常字符串"abcdef"在静态存储区的地址,而不是指针变量p自身所在内存地址;
*p          指的是常字符串"abcdef"首地址内存的值,即'a', <=> p[0] <=> *(p+0);
&p          指的是指针变量p自身所在内存地址的值。

程序天下,C的亡魂。 偶``````来自地狱
2009-11-05 17:57
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
好晕···看反了···
2009-11-05 18:10
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
收藏
得分:0 
*p是个指针,
在priantf里面的话,*p是取指向地址内的值。
  &p指针所存在的地址。。。
    &*p就是p       &取地址,*取地址内的值组合无意义
2009-11-05 20:28
快速回复:谁能解释下char *p="abcdef"; 其&p表示什么意思?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021630 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved