C/C++ 语言字符数组和字符串数组的疑惑

下面几个形式该如何理解,
char st[30]="Mynameis";puts(&st[0]);//这边运行出来的结果为 Mynameis 运行OK。
char st[30]="Mynameis";puts(st[0]);//这边运行就报错,数组不就是地址么?为什么还要加取地址符&??
char st[30]="Mynameis";puts(&st[1]);//这边运行结果为 ynameis , 开头字母M为什么会丢掉?
char st[5]={‘a’,'b','c','d','e'};
printf("%c",st[1]);//这边不用加取地址符运正常为b
char st[5]={‘a’,'b','c','d','e'};
printf("%c",&st[1]);//这边加取地址符运行就为一个符号,可能是乱码,为什么?

第1个回答  2013-09-21
st[0]代表的是st字符转中下标是0的字符,而st才是这个字符串的地址,put(&st[0])和puts(st)的效果是一样的。

因为puts函数是从输入的内个地址开始向后输出,直到遇到结束符‘\0'结束,M是st[0],当然就没了 = =。
printf是格式化的输出,“%c”表示,把后面的值按照一个字符的形式输出出来,但是你的第二个的意思就是把st[1]的地址用字符串的形式输出,地址在计算机中通常表示成一个16进制的数,当然会出现别乱七八糟的东西。
其实我也是个初学者。有不对的请大神轻喷。=。=

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网