引用函数调换指针型字符串*a -- *b。
本帖最后由 b84408190 于 2016-12-19 09:38 编辑#include <stdio.h>
void main(void)
{
char copy_string(char *a, char *b);
char *a="i am a teather.";
char *b="you are student.";
b=a;
printf("%s\n%s\n",a,b);
}
结果为:i am a teather.
i am a teather.
以上不用函数,可行。
以下用函数为啥就不行?求助。。。。
#include <stdio.h>
void main(void)
{
void copy_string(char *a, char *b);
char *a="i am a teather.";
char *b="you are student.";
copy_string(a,b);
printf("%s\n%s\n",a,b);
}
void copy_string(char *a,char *b)
{
b=a;
}
结果为:i am a teather.
you are student.
函数void copy_string(char *a,char *b)中传入的是a和b两个字符串的地址的值,而不是真正的指针变量,改成void copy_string(char **a,char **b)的话应该就正常了 GavinR 发表于 2016-12-11 21:49
函数void copy_string(char *a,char *b)中传入的是a和b两个字符串的地址的值,而不是真正的指针变量,改成v ...
我确实想通过改变b的首地址达到一次性改变打出字符串。
通过调试发现a地址确实赋值给了b,但好像函数没发生作用,运行出了函数后b的地址又变回去了,所以才输出没变化。 被调用函数的内部的参数在被调用函数外不会被改变。
这句话可能有点不太明确。
简单来说就是你可以试试用return的方式返回一个b。 不解释了,不懂再问吧
只做最小的修改而已,编译时警告会很多
#include <stdio.h>
void copy_string(int *a,int *b)
{
*b=*a;
}
void main(void)
{
char *a="i am a teather.";
char *b="you are student.";
int c=&a,d=&b;
copy_string(c,d);
printf("%s\n%s\n",a,b);
}
fc1735 发表于 2016-12-12 07:14
不解释了,不懂再问吧
只做最小的修改而已,编译时警告会很多
cannot convert from 'char ** ' to 'int'。类型不一样不能赋值。 本帖最后由 fc1735 于 2016-12-12 09:05 编辑
b84408190 发表于 2016-12-12 08:55
cannot convert from 'char ** ' to 'int'。类型不一样不能赋值。
.cpp改成.c
或把int 都替换成char** 已解
#include <stdio.h>
void main(void)
{
char * copy_string(char *a, char *b);
char *a="i am a teather.";
char *b="you are student.";
b=copy_string(a,b);
printf("%s\n%s\n",a,b);
}
char * copy_string(char *a,char *b)
{
return a;
}
结果为:i am a teather.
i am a teather.
页:
[1]