在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。在大多数情况下,一维数组和一维指针是可以通用的。比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。 代码可以写成如下形式:int *int_array_create(int n)//...
用传入a,b两个的地址,在函数中把要返回的值写到这两个地址对应的存储区上。在主函数中就可以用,a,b被test函数改过后的值了。如果要用return的话,把要返回的值做成一个结构,再返回这个结构就可以了。
include<stdio.h>#include<malloc.h>#include<string.h>char *md(char a[]);//错误的数组返回char *md2(char a[]);//正确的数组返回int main(){ char password[10]="1234567",*decrypt=NULL; decrypt=md(password); printf("外部函数传递数组到子函数,子函数改变,外部函数也改变...
define MIN(x,y)int * add_1();main(){int * p = add_1();int b[5];for(int i=0;i<5;i++){ b[i] = *(p+i);} for(i=0;i<5;i++){ printf("%d",b[i]);}} int * add_1(){ int static a[5]={1,2,3,4,5};return a;} ...
那么返回的值不可以是局部变量,有如下几种是可以的:a) 使用静态局部变量存储,并返回地址;b) 使用全局变量存储,返回地址;c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;d) 在参数中传入数组地址,并返回。即返回的实际上是主调函数中的变量地址。
在C语言,数组无论作为参数还是返回值,都是以指针形式返回或者传递的。在数组中,数组名字代表的是数组第1个元素的地址。比如如下数组。int a[10] = {1,2,3,4,5,6};数组名a,实际上相当于&a[0]。所以,当实参是数组名,形参是指针变量时,只要保证数据类型一致即可传递。如下面的示例代码:i...
include<stdio.h>int *arry ( int a[]);int main (){int a[]={0,1,0,1,1,0,1,0};int *b =arry(a) ; int i;for (i = 0;i<8;i++){printf ("%d " , a[i]);} return 0;}int *arry ( int a[]){ int i;for (i = 0;i<8;i++){if (a[i]==0...
return b;}int main(){ char a[k]; printf("请输入字符串:\n"); scanf("%s",&a); char *c=find(a); printf("字符串中数字有:\n"); printf("%s\n",c);}用返回值的形式来做数组问题确实不好,最好是用全局变量的形式做比较好。有啥问题追问吧。
子函数本身可以直接在作用域中进行调用。1、通过函数返回值返回地址传递数组。声明函数时需要声明函数返回值类型为对应数组的地址,此时可以返回数组的地址,结合数组元素的地址关系可以传递整个数组,同时可以根据数组的特性传递多个参数。2、通过输入参数传递数组。声明函数时提供空输入参数,调用函数时提供目标...
数组在作为函数返回值或者函数参数时,实际上只作为指针来返回或者传递的。因此返回值用指针数据类型。比如下面的代码:int g_a[4] = {1,2,3,4};int * retn_arrary() //返回值用指针类型即要。{return g_a; }