C语言怎么向自定义函数中传入一个数组,处理完再返回新的数组?

2024-12-05 06:29:36
推荐回答(1个)
回答1:

看你的代码。

你问题并不在数组传入。你函数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;