
正文
c语言中数组做返回值,c数组作为返回值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言里1维数组作为返回值怎么传给主函数??
1、数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
2、传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三种函数声明完全等同。实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。
3、以下是我写的一个简单的例子,一维数组和二维数组传参。以下是运行结果,写的不好请指正,如图所示。
4、因此,如果想在主函数中输出自定义函数中定义的数组,就要在自定义函数中把数组定义为静态数组,然后返回数组名即可。静态变量的生命周期是整个程序的生命期,从定义开始,直到程序结束,才会被释放。
5、C语言调用完void函数后如何将值返回主函数实现输出的呢?因为 void函数没有返回值,要想把让函数的值带回主函数,还有两种办法,第一是使用指针做参数,第二是潆数组做参数。用指针传递就可以了吗,那如果不用指针呢?用指针当然可以啦。如果不用指针,那就选择用数组参数了。
相关问答
Q1: 请问在C语言中数组可以作为返回值吗
ANSI C语言标准,明确规定 数组类型和函数类型不可以做为返回值。解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针。这可以做为c语言引入指针的另一个理由。
利用指针,例如你在子函数中已经生成了一个数组a,那么你定义数组的返回值类型为该数组的元素类型的指针类型,再指向数组首字母即可.例如:是a整型数组 int s(){ int a[10],*p;p=a;return p;} 主函数用一个指针来接这个地址值即可。
不能够返回整个数组,只能返回数组中的某个值。如果数组在函数内部定义,也不能直接返回数组名(临时变量在函数结束时会释放)。一般写程序不会把数组作为返回值返回,想要返回整个数组,可以用指针来实现。
数组在作为函数返回值或者函数参数时,实际上只作为指针来返回或者传递的。因此返回值用指针数据类型。比如下面的代码:int g_a[4] = {1,2,3,4};int * retn_arrary() //返回值用指针类型即要。
注意C/C++不能直接返回一个数组。这是由于在C/C++中,数组不是一种类型,因此不能被直接返回。在C/C++中,一般有两种方法来返回一个数组。
的形式,这时是可以将数组名返回的。2 当一维数组不是静态类型,即不存在static修饰时,数组为局部变量,这时不能将数组名返回。当把数组名返回时,实际上是返回了数组的首地址,后续继续使用该地址指向的内存。
Q2: 在C语言中,如何把一个char类型的二维数组作为方法的返回值?
1、我们首先定义一个二级指针和一个行列变量[int ** array,row,column;]。然后我们编写进入行和列的语句,代码如图所示。接下来我们可以用一维数组打开一维一维数组。接下来,我们使用[array [i] =(int *)malloc(sizeof(int)* column);]来为数组再次生成包含该数组的新数组。
2、函数不能返回一个数组,只能返回一个变量,或地址 。如果你想直接返回一个二维数组,这是做不到的。你可以用下面的方法 ,先建一个结构体。struct array{int a[3][3];}; array solve(){array a;return a;} 通过这种方法,来得到二维数组。
3、返回值:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。说明:关于该函数的原型,在旧的版本中malloc返回的是char型指针,新的ANSI C标准规定,该函数返回为void型指针,因此必要时要进行类型转换。
4、由于C/C++是允许返回结构体的,可以定义一个结构体模板,把数组作为成员安排在其中,函数中临时声明结构体变量,操作其中的数组;完毕后返回结构体变量,在主调函数中用同类型的结构体变量接收就可间接实现“返回一个数组”。
Q3: C语言中,整个数组可以作为函数的返回值吗?
1、不能够返回整个数组,只能返回数组中的某个值。如果数组在函数内部定义,也不能直接返回数组名(临时变量在函数结束时会释放)。一般写程序不会把数组作为返回值返回,想要返回整个数组,可以用指针来实现。
2、ANSI C语言标准,明确规定 数组类型和函数类型不可以做为返回值。解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针。这可以做为c语言引入指针的另一个理由。
3、函数使用两个嵌套的for循环以列为顺序遍历二位数组,将其中每一个数据元素都存储进准备好的一维数组中。因为c语言函数无法将整个数组作为返回值,故函数会返回一个指向一维数组的指针。
4、不能直接返回一个数组,但是可以用其他方式实现类似功能。方法1:利用全局变量 分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。
5、因为C语言在设计时是以效率优先的,因为数组可能很大,整体传递很花时间,所以不允许数组整体赋值,也不能返回数组,也不作为参数传递(数组作参数时实际是将它转化成了指针,这好像不符合值传递)。不过如果确实需要返回数组,也是有办法的,可以将其包在结构中。
Q4: C语言调用数组返回数组怎么做?
1、int g_a[4] = {1,2,3,4};int * retn_arrary() //返回值用指针类型即要。
2、/* do something with array */ return array;}这样这个数组建立在heap堆上,调用完函数还在,而你返回了那个堆上数组的首地址,这样就没问题了。用完free(array);楼上用static不推荐,用static的话会在整个程序的run time运行时都占用空间。而是用malloc,动态申请释放更合理。
3、首先,C/C++只能返回数组的指针而不能返回整个数组。即使返回数组的指针,但如果函数中的数组是自动性质,那将是危险的。这是比较正宗的表述。如果确实需要从函数中返回自动性质的数组的全部元素值,有没有办法呢?有。
4、我们首先定义一个二级指针和一个行列变量[int ** array,row,column;]。然后我们编写进入行和列的语句,代码如图所示。接下来我们可以用一维数组打开一维一维数组。接下来,我们使用[array [i] =(int *)malloc(sizeof(int)* column);]来为数组再次生成包含该数组的新数组。
5、在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。在大多数情况下,一维数组和一维指针是可以通用的。比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。
Q5: C语言函数如何return数组?
1、在C/C++中,一般有两种方法来返回一个数组。
2、在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。在大多数情况下,一维数组和一维指针是可以通用的。比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。
3、在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址,这样就可以实现返回两个值的效果。
4、用指针,另外保存数据的变量退出函数时不得消失。
5、//inside a function{ // n is the size of the array; int* array = (int *)malloc(sizeof(int)*n); /* do something with array */ return array;}这样这个数组建立在heap堆上,调用完函数还在,而你返回了那个堆上数组的首地址,这样就没问题了。
关于c语言中数组做返回值和c数组作为返回值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






