C语言改变函数参数的值,该怎么处理
C语言改变函数参数的值
我有一个函数func(X),X 是字符串类型的,我先把函数最终的结果体现在X中,就是说函数执行完之后,我可以读取X的值得到结。我知道如果X是int等类型的话要用传递实参的引用就可以了,但是现在X是字符串类型的怎么搞。
例如,swap(X,Y),交换X,Y的值,其中X,Y都是字符串类型的。 用C语言实现。
------解决方案--------------------
------解决方案--------------------
和交换引用的int没什么不同
void swap(char* p1, char* p2)
{
char tmp[1000];
strcpy(tmp, char p1);
strcpy(p1, p2);
strcpy(p2, tmp);
}
------解决方案--------------------
我有一个函数func(X),X 是字符串类型的,我先把函数最终的结果体现在X中,就是说函数执行完之后,我可以读取X的值得到结。我知道如果X是int等类型的话要用传递实参的引用就可以了,但是现在X是字符串类型的怎么搞。
例如,swap(X,Y),交换X,Y的值,其中X,Y都是字符串类型的。 用C语言实现。
c
字符串
函数参数
------解决方案--------------------
void swap(char *&s1, char *&s2)
{
char *stemp = s1;
s1 = s2;
s2 = stemp;
}//调用时直接传char*的参数就可以了
------解决方案--------------------
和交换引用的int没什么不同
void swap(char* p1, char* p2)
{
char tmp[1000];
strcpy(tmp, char p1);
strcpy(p1, p2);
strcpy(p2, tmp);
}
------解决方案--------------------
void swapStr(char *str1 ,char *str2)
{
if (strlen(str1) != strlen(str2))
{
printf("长度不同无法交换!\n");
return;
}
char *pTemp = new char[strlen(str1)+1];
memset(pTemp ,0 ,strlen(str1)+1);
strcpy(pTemp ,str1);
strcpy(str1 ,str2);
strcpy(str2 ,pTemp);
delete []pTemp;
}
int main(int argc, _TCHAR* argv[])
{
char p1[] = "hello";
char p2[] = "world";
swapStr(p1 ,p2);
printf("%s-%s" ,p1 ,p2);
return 0;
}