1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > c语言向自定数组_C语言怎么向自定义函数中传入一个数组 处理完再返回新的数组?...

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

时间:2020-11-13 19:36:58

相关推荐

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

展开全部

看你的代码。

你问题并不在数组传入62616964757a686964616fe4b893e5b19e31333431346362。你函数mymd5接收password数组,mymd5的password数组变量和外部函数的password地址相同,所以改变其中外部函数的数组也改变。

但你mymd5返回的数组decrypt,是局部变量,当mymd5调用结束,这个数组的内存空间就释放了。你接收了也是NULL。所以要用malloc或calloc申请动态内存。这样不会被释放。

我写了简单案例,你参考:

#include

#include

#include

char*md(chara[]);//错误的数组返回

char*md2(chara[]);//正确的数组返回

intmain()

{

charpassword[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);

return0;

}

char*md(charpassword[])

{

chardecrypt[10]="*********";

password[0]=0,strcpy(password,"abcdefghi");

returndecrypt;

}

char*md2(charpassword[])

{

char*decrypt=(char*)malloc(sizeof(char)*10);

if(!decrypt)

returnNULL;

strcpy(decrypt,"*********");

password[0]=0,strcpy(password,"abcdefghi");

returndecrypt;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。