我的程序:
#include<stdio.h>
#include<conio.h>
char* str(char*src);\\declared as function global
main()
{
char src[40]="hello";
clrscr();
puts(src);
str(src);\\ function called
puts(src);\\does not put changed string?
getch();
return 0;
}
char* str( char *src)
{
src="readers";\\changing my source string<--is it changes???
return src;\\returning source sting
}
输出:
hello hello
为什么 src
没有成为“读者”
?
最佳答案
在您的代码中,src="readers";
是错误的。你必须像这样尝试
strcpy(src, "readers");
原因是,C
在传递函数参数时采用了传值方式。所以,这里的 src
是按值传递的,所以你不能从函数内部更改 src
。您可以从函数更改 *src
。因此,要更改 src
指向的内容,您必须使用 strcpy()
。
此外,正如 @coolguy 先生所提到的,您没有使用 str()
的返回值,因此 return
声明在这里没有影响。
关于c - 当我从函数中更改它时,为什么 `src` 没有更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33471904/