数组指针的问题:char s[], &s, s, *s

alula 2002-04-20 11:52:48
一个测试:
char s[] = {'H','H'};
printf("&s=%d;s=%d;*s=%c;\n", &s, s, *s);

结果:
&s=6552048;s=6552048;*s=H;

&s=6552048表示s的地址是6552048.
s=6552048 表示s地址的内容是6552048,它指向自己.
那么
*s不是应该打印出自己的内容6552048吗?
...全文
130 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbl20020123 2002-04-20
  • 打赏
  • 举报
回复
同意楼上阿明所说的。*s相当于s[0].

mathe 2002-04-20
  • 打赏
  • 举报
回复
&s同s的区别是它们的类型不同,但是它们的值相同。
同样对于多维数组
a[2][2][2]
那么&a,a,a[0],a[0][0]的值全部相同,但是他们的类型都不同
挺拔的劲松 2002-04-20
  • 打赏
  • 举报
回复
同意楼上阿明所说的。*s相当于s[0].
alula 2002-04-20
  • 打赏
  • 举报
回复
楼上的,人家是看书了,就是不明白,才发问的。
海涵海涵。。

注意表述,字符串和字符数组不是一个概念的。
zhuimengrencn 2002-04-20
  • 打赏
  • 举报
回复
&s 得到字符串的首地址
s 代表字符串的首地址,《因为它是指针变量》
*s 代表字符串的第一个字符 *(s+1)代表字符串的第二个字符

老大请你回去好好地看一看书吧!!!!!!!
哦!我真受不了你!!!
neptunez 2002-04-20
  • 打赏
  • 举报
回复
&s和s都是首地址,这个地址的冬冬是H
简单?~
hammer_shi 2002-04-20
  • 打赏
  • 举报
回复
一个测试:
char s[] = {'H','H'};
printf("&s=%d;s=%d;*s=%c;\n", &s, s, *s);

结果:&s=6552048;s=6552048;*s=H;

&s=6552048表示s的地址是6552048.
s=6552048 表示s地址的内容是6552048,它指向自己.
那么 *s不是应该打印出自己的内容6552048吗?
//*s只是所指向的首地址的内容。 要打印全部内容的话则需要用*s++;
//s和&s则是指向地址.
wiler 2002-04-20
  • 打赏
  • 举报
回复
&s表示把字符数组作为整体的首地址
s表示字符数组第一元素的首地址
*s , s[?] 都表示数组的元素 ,所以打印出'H'
liem 2002-04-20
  • 打赏
  • 举报
回复
&s表示把字符数组作为整体的首地址
s表示字符数组第一元素的首地址
比较一下&s+1与s+1值
alexzhou 2002-04-20
  • 打赏
  • 举报
回复
同意笨笨翁
benbenweng 2002-04-20
  • 打赏
  • 举报
回复
同意wiler(贼狼)的说法
zhaoweikid 2002-04-20
  • 打赏
  • 举报
回复
对,*(s+1)相当于s[1]

70,035

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧