
正文
c语言中函数传入一个数组 c语言中函数传入一个数组怎么写
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言数组在函数中的传递
c语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!
相关问答
Q1: C语言怎么向自定义函数中传入一个数组,处理完再返回新的数组?
看你的代码。
你问题并不在数组传入。你函数mymd5接收password数组,mymd5的password数组变量和外部函数的password地址相同,所以改变其中外部函数的数组也改变。
但你mymd5返回的数组decrypt,是局部变量,当mymd5调用结束,这个数组的内存空间就释放了。你接收了也是NULL。所以要用malloc或calloc申请动态内存。这样不会被释放。
我写了简单案例,你参考:
#includestdio.h
#includemalloc.h
#includestring.h
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;
}
char *md(char password[])
{
char decrypt[10]="*********";
password[0]=0,strcpy(password,"abcdefghi");
return decrypt;
}
char *md2(char password[])
{
char *decrypt=(char *)malloc(sizeof(char)*10);
if(!decrypt)
return NULL;
strcpy(decrypt,"*********");
password[0]=0,strcpy(password,"abcdefghi");
return decrypt;
}
Q2: c语言函数怎么传数组
C和C++都没有办法传数组,只能传“指针”,指针和数组的差别就在于函数内无法检测数组的尺寸
Q3: 在C语言中,数组作为参数,是怎样在函数之间传递的啊??
数组作为参数是按地址传递的
数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送c语言中函数传入一个数组, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后c语言中函数传入一个数组,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
Q4: c语言怎么将数组作为函数参数传入?
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#includestdio.h
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
关于c语言中函数传入一个数组和c语言中函数传入一个数组怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







