C语言调用函数互换两个字符串的值

为什么这样不行
#include<stdio.h>
#include<stdlib.h>

void ex(char *str1, char *str2);

int main(){
char *str1 = "aaa", *str2 = "bbb";
ex(str1, str2);
printf("%s %s",str1,str2);
return 0;
}

void ex(char *str1, char *str2){
char *temp = (char *)malloc(50*sizeof(char));
temp = str1;
str1 = str2;
str2 = temp;
free(temp);
}

把free(temp)注释就好了,str2指向temp内存,释放掉了,printf处自然报错,或者temp不申请内存,去掉free(temp)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-28
#include<stdio.h>
#include<stdlib.h>

void ex(char **str1, char **str2);

int main(){
char *str1 = "aaa", *str2 = "bbb";
ex(&str1, &str2);
printf("%s %s", str1, str2);
return 0;
}

void ex(char **str1, char **str2){
char *temp;
temp = *str1;
*str1 = *str2;
*str2 = temp;
}

本回答被提问者和网友采纳
相似回答