字符数组:
char str1[]="abcdef";
char str2[]="qwerty"
str1 和str2 的地址都在栈里,如果要交换str1和str2的值只需
char *p=(char *)malloc(n*sizeof(char)); //n为str1/str2的字符个数(包括'\0')
strcpy(p,str1);
strcpy(str1,str2);
strcpy(str2,p);
free(p);
例:
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
void swap(char *str1,char *str2,int n)
{
char *p=(char *)malloc(n*sizeof(char));
strcpy(p,str1);
strcpy(str1,str2);
strcpy(str2,p);
free(p);
}
int main()
{
char str1[]="abcdef";
char str2[]="qwerty";
printf("str1=%s\nstr2=%s\n",str1,str2);
swap(str1,str2,sizeof(str2));
printf("str1=%s\nstr2=%s\n",str1,str2);
return 0;
}
结果: