不能直接返回一个数组,但是可以用其他方式实现类似功能。方法1:利用全局变量 分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定...
数组在作为函数返回值或者函数参数时,实际上只作为指针来返回或者传递的。因此返回值用指针数据类型。比如下面的代码:int g_a[4] = {1,2,3,4};int * retn_arrary() //返回值用指针类型即要。{return g_a; }
1、我们首先定义一个二级指针和一个行列变量[int ** array,row,column;]。2、然后我们编写进入行和列的语句,代码如图所示。3、接下来我们可以用一维数组打开一维一维数组。4、接下来,我们使用[array [i] =(int *)malloc(sizeof(int)* column);]来为数组再次生成包含该数组的新数组。5、...
// 方法1,用静态变量进行返回 char *SubFunction(void){ static char szText[5] = "adfa"; // 用静态空间 //对p进行赋值操作 return szText;} void Caller() // 这个函数调用SubFunction { TRACE("%s\n", SubFunction);} // 方法2,用指针传递 void SubFunction(char *pText1, char *p...
那么返回的值不可以是局部变量,有如下几种是可以的:a) 使用静态局部变量存储,并返回地址;b) 使用全局变量存储,返回地址;c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;d) 在参数中传入数组地址,并返回。即返回的实际上是主调函数中的变量地址。
在C/C++中,一般有两种方法来返回一个数组。第一种方法:返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组例子如下:#include#includeint (*retArray())[10]{int (*a)[10];int i=0;/*动态开辟空间*/a=calloc(10,sizeof(...
可以的,用指针做返回值 int * array(int *a){ for(i=0;i<10;i++){ a[i]++;} return a;} main(){ int *p,i;int a[10]={1,2,3,4,5,6,7,8,9,0};p=array();for(i=0;i<10;i++){ printf("%d ",p[i]);} } 运行后数组各值加1 ...
include <stdio.h> 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;} ...
1、ANSI C语言标准,明确规定 数组类型和函数类型不可以做为返回值。解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针。这可以做为c语言引入指针的另一个理由。2、字符串是数组的一种,是字符数组,所以同样不可以作为返回值。3、结构体类型可以做为返回值,C语言设计者当时引入...
首先,C/C++只能返回数组的指针而不能返回整个数组。即使返回数组的指针,但如果函数中的数组是自动性质,那将是危险的。这是比较正宗的表述。如果确实需要从函数中返回自动性质的数组的全部元素值,有没有办法呢?有。由于C/C++是允许返回结构体的,可以定义一个结构体模板,把数组作为成员安排在其中,...