请问指针问题,很简单。

晴天v1 2008-08-22 03:54:43
程序如下:


void charTest(char *);

int main(int argc, char* argv[])
{

char n[20] ;
charTest(n);
printf("\n%s\n",n); //????为什么这里没有输出abcdefg
getchar();
return 0;
}


void charTest(char *ch){
char * you = "abcdefg";

ch = you ;

}



在charTest(char ch)里面通过 ch = you ; ch应该是指向和you指向相同的地址吧? 在函数里ch指向了"abcdefg",为什么在main里面看不到?谢谢。
...全文
80 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
晴天v1 2008-08-23
  • 打赏
  • 举报
回复
推广个链接,浪曦的,很不错。
http://bbs.langsin.com/register.php?fromuid=42479
晴天v1 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lbh2001 的回复:]
void charTest(char *ch)
{
char * you = "abcdefg";

ch = you ;
}

char n[20] ;
charTest(n);//n是数组首地址,是不会改变

函数中的ch只是得到n的一份拷贝
n的变化并不影响n,也不可能改变n,否则会报错的
[/Quote]

谢谢。

不过好像不是这样的吧,ch指向的应该就是n 啊,ch的变化当然可以改变n。
晴天v1 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tgh621 的回复:]
C/C++ code
void charTest(char *ch){
char * you = "abcdefg";

//ch = you ;
strcpy(ch,you);

}
[/Quote]

谢谢。开始我只想到用memcpy(),把值复制过来,如果you指向的是动态的字符串,还得计算长度,strcpy()是个好办法。谢谢。
lbh2001 2008-08-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lbh2001 的回复:]
void charTest(char *ch)
{
char * you = "abcdefg";

ch = you ;
}

char n[20] ;
charTest(n);//n是数组首地址,是不会改变

函数中的ch只是得到n的一份拷贝
ch的变化并不影响n,也不可能改变n,否则会报错的
[/Quote]
lbh2001 2008-08-22
  • 打赏
  • 举报
回复
void charTest(char *ch)
{
char * you = "abcdefg";

ch = you ;
}

char n[20] ;
charTest(n);//n是数组首地址,是不会改变

函数中的ch只是得到n的一份拷贝
n的变化并不影响n,也不可能改变n,否则会报错的




晴天v1 2008-08-22
  • 打赏
  • 举报
回复
谢谢。
tgh621 2008-08-22
  • 打赏
  • 举报
回复

void charTest(char *ch){
char * you = "abcdefg";

//ch = you ;
strcpy(ch,you);

}

晴天v1 2008-08-22
  • 打赏
  • 举报
回复
对,真是蠢死了,局部变量都没得了,不好意思,太丢人了。
god_sun 2008-08-22
  • 打赏
  • 举报
回复
void charTest(char *ch){
char * you = "abcdefg";

ch = you ;

}
跳出时候you 已经指向其他地方

69,382

社区成员

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

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