好菜的问题??

piskarev 2005-03-29 05:24:48
main()
 {char str[][10]={"China","Beijing"},*p=str;
 printf("%s\n",p+10);
 }
为什么会输出Bejing???
...全文
220 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenqianlong 2005-04-07
  • 打赏
  • 举报
回复
學到了
inlin 2005-04-07
  • 打赏
  • 举报
回复
printf("%c\n",p+10); //输出为 B
printf("%s\n",p+10); //输出为 Beijing

fenghuiyyd 2005-04-07
  • 打赏
  • 举报
回复
上面两楼的是正解,
*p=str 这样赋值是对的
......
指针变量p指向数组str[][10]的首地址,即指向str[0][0],
用printf函数将输出字符串“china”;
p+10提向str[1][0]的地址,
用printf函数将输出字符串"beijing";
winia 2005-04-07
  • 打赏
  • 举报
回复
*p=str 这样赋值是对的,str是二维数组的首地址的指针,同时也代表二维数组第一个值的地址
asi_2104 2005-04-07
  • 打赏
  • 举报
回复
指针变量p指向数组str[][10]的首地址,即指向str[0][0],
用printf函数将输出字符串“china”;
p+10提向str[1][0]的地址,
用printf函数将输出字符串"beijing";
andaxuesheng 2005-04-04
  • 打赏
  • 举报
回复
我觉得应该是对的吧!
是不是在别的地方有什么原因啊?
czrain 2005-04-04
  • 打赏
  • 举报
回复
*p=str,这样赋值是错误的!
kukucheng 2005-04-01
  • 打赏
  • 举报
回复
别老搞这么无聊的问题好不好,有空多做点东西吧
skywgs 2005-04-01
  • 打赏
  • 举报
回复
输出Beijing是正确的,多看点指针方面的书吧
tailalela 2005-04-01
  • 打赏
  • 举报
回复

输出Beijing是正确的

你想让他输出什么
Joehlc 2005-03-30
  • 打赏
  • 举报
回复
想输出 Beijing 应该是
main()
 {char str[][10]={"China","Beijing"},*p=str;
 printf("%s\n",p+1); /* 或者是 printf("%s\n",str[1]); */
 }
xjp6688 2005-03-30
  • 打赏
  • 举报
回复
程序有错误
yangkun110 2005-03-30
  • 打赏
  • 举报
回复
回复人: rd828(西伯利亚的兔子) ( ) 信誉:100 2005-03-29 18:15:00 得分: 0



str[1]是第一行的首地址,str[0]是第0行的首地址。



冥王之锤 2005-03-29
  • 打赏
  • 举报
回复
你的程序是错误的,不能运行。
str是一个有2个数组类型的数组,每个数组类型元素又是一个有10个char型元素的数组。
你可以把str理解为一个指向数组的指针。p是一个指向char的指针。
是不能把str赋值于p的。这回产生一个类型转换错误,无法编译。

rd828 2005-03-29
  • 打赏
  • 举报
回复
你用什么编译的啊?根本无法输出阿!
str[1]是第一行的首地址,str[0]是第0行的首地址。
xuxinmmy 2005-03-29
  • 打赏
  • 举报
回复
printf("%c\n",p+10); //输出为 B
printf("%s\n",p+10); //输出为 Beijing
pcboyxhy 2005-03-29
  • 打赏
  • 举报
回复
p+10 的地址就是 str[1]

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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