看你的代码。
你问题并不在数组传入。你函数mymd5接收password数组,mymd5的password数组变量和外部函数的password地址相同,所以改变其中外部函数的数组也改变。
但你mymd5返回的数组decrypt,是局部变量,当mymd5调用结束,这个数组的内存空间就释放了。你接收了也是NULL。所以要用malloc或calloc申请动态内存。这样不会被释放。
我写了简单案例,你参考:
#include
#include
#include
char *md(char a[]);//错误的数组返回
char *md2(char a[]);//正确的数组返回
int main()
{
char password[10]="123456789",*decrypt=NULL;
decrypt=md(password);
printf("外部函数传递数组到子函数,子函数改变,外部函数也改变,password=%s\n",password);
printf("错误返回方式:局部变量,外部函数接收失败,被自动释放,decrypt=%s\n",decrypt);
decrypt=md2(password);
printf("正确返回方式:动态申请,外部函数接收成功,不会被自动释放,decrypt=%s\n",decrypt);
return 0;