菜鸟问题

gameboy2 2011-01-07 10:11:13

#include <stdio.h>
void a(char *p)
{ p="world";
return 0;}
int main(void)
{
char *p="hello";
a(p);
printf("%s",p); //不能写成*p 为什么
}

...全文
301 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzero13199 2011-02-28
  • 打赏
  • 举报
回复
p指字符串地址首地址
justkwy 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 duruos 的回复:]

*p,是字符串的第一个元素吧,是个char型的;
[/Quote]

这个正解,我刚说的第三句有问题--!

printf("%c",*p);//这样就没有问题了
justkwy 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 gameboy2 的回复:]
C/C++ code

#include <stdio.h>
void a(char *p)
{ p="world";
return 0;}
int main(void)
{
char *p="hello";
a(p);
printf("%s",p); //不能写成*p 为什么
}
[/Quote]

return 0;//void 可以返回0吗?我这是不行

p="world";//world 是存放在那的?栈空间还是堆空间,是堆空间的话返回之后就会释放掉,world还会存在吗?

printf("%s",p); //%s 表示以字符串形式输出, p是字符串的首地址,而*p是是一堆数字是那块地址的索引
Ronaldo9999 2011-02-28
  • 打赏
  • 举报
回复
字符串当然 给首地址啊 所以写P
duruos 2011-02-28
  • 打赏
  • 举报
回复
*p,是字符串的第一个元素吧,是个char型的;
jackycaia 2011-02-27
  • 打赏
  • 举报
回复
神马??void有返回值,int的没有。。。
bluesky12312388 2011-01-16
  • 打赏
  • 举报
回复
#include <stdio.h>
void a(char *p) //若要改变p的指向,可以改成char * &p;
{
p="world";
return 0;
}
int main(void)
{
char *p="hello";
a(p);
printf("%s",p); //不能写成*p 为什么 可以写成*p 但要改成printf("%c",*p); 输出h;
}
  • 打赏
  • 举报
回复
printf("%s",p); //p 就地址,该位置需要的是地址,加*变成值了
方紫涵 2011-01-15
  • 打赏
  • 举报
回复
#include <stdio.h>
void a(char **p)
{ *p="world";
return 0;}
int main(void)
{
char *p="hello";
a(&p);
printf("%s",p); //不能写成*p 为什么
}

==============
这样子你在调试下


搂住对指针传di再熟悉下
buptwm 2011-01-15
  • 打赏
  • 举报
回复
用*p输出 会报错
harleypang 2011-01-15
  • 打赏
  • 举报
回复
调试过:
有以下问题:
1,a函数为void居然有return 0?
2,main函数为int ,居然没return?

我改成:
#include <iostream.h>
void a(char *p)
{ p="world";
// return 0;
}
void main(void)
{
char *p="hello";
a(p);
cout<<p<<endl; //不能写成*p 为什么
}


===========
输出为:hello
Ronaldo9999 2011-01-15
  • 打赏
  • 举报
回复
输出字符串时 应该写出字符串的首地址啊 这是printf这个函数规定这样的啊 没有为什么 语法规定 啊
迷糊 2011-01-11
  • 打赏
  • 举报
回复
居然能编译通过?
且还有运行结果?
p="world"; // ?????????
wizard_tiger 2011-01-10
  • 打赏
  • 举报
回复
%s是输出字符串,后面对应的参数是一个字符串指针
而*p是一个字符,p才是指向这个字符串的指针。
liangchf2003 2011-01-10
  • 打赏
  • 举报
回复
p字符串首地址
gameboy2 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 zmywly8866 的回复:]

引用楼主 gameboy2 的回复:
C/C++ code

#include <stdio.h>
void a(char *p)
{ p="world";
return 0;}
int main(void)
{
char *p="hello";
a(p);
printf("%s",p); //不能写成*p 为什么
}

楼主可以想一下写成*p,*p代表什么?不就是'……
[/Quote]*p是h
zmywly8866 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 gameboy2 的回复:]
C/C++ code

#include <stdio.h>
void a(char *p)
{ p="world";
return 0;}
int main(void)
{
char *p="hello";
a(p);
printf("%s",p); //不能写成*p 为什么
}
[/Quote]
楼主可以想一下写成*p,*p代表什么?不就是'w'吗,而你要的输出格式是%s,也就是字符串了,用*p只是输出一个字符而已!
gameboy2 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 wizard_tiger 的回复:]

%s是输出字符串,后面对应的参数是一个字符串指针
而*p是一个字符,p才是指向这个字符串的指针。
[/Quote]
谢谢 俺基础不好 没认真读书 大家要引以为戒啊
JackMao 2011-01-09
  • 打赏
  • 举报
回复
没有申请内存...
lon3006 2011-01-09
  • 打赏
  • 举报
回复
这个应该输出hello,
但怎么样通过函数a()来改变p的值,最终输出出“world”
加载更多回复(23)

33,317

社区成员

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

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