C语言中,return语句怎么样返回一个数组
发布时间:2025-05-18 02:23:23 发布人:远客网络
一、C语言中,return语句怎么样返回一个数组
1、首先,C/C++只能返回数组的指针而不能返回整个数组。即使返回数组的指针,但如果函数中的数组是自动性质,那将是危险的。这是比较正宗的表述。如果确实需要从函数中返回自动性质的数组的全部元素值,有没有办法呢?有。由于C/C++是允许返回结构体的,可以定义一个结构体模板,把数组作为成员安排在其中,函数中临时声明结构体变量,操作其中的数组;完毕后返回结构体变量,在主调函数中用同类型的结构体变量接收就可间接实现“返回一个数组”。举例代码如下:
2、 intm[30];//把数组m安排在结构体A中
3、 structAs;//在函数中声明自动型结构体变量s
4、 for(i=0;i<n;s.m[i++]=i+1);//为结构体成员数组m赋值1~15
5、 for(j=n-1,i=0;i<j;i++,j--)//倒序这个数组
6、 k=s.m[i],s.m[i]=s.m[j],s.m[j]=k;
7、 Aa;//主调函数中声明同类型结构体变量a接收函数fun的返回值
8、 a=fun(15);//用15调用fun(不要大于30,只是举例),将结果赋于a
9、 for(i=0;i<15;i++)//输出看看是不是倒序了...
二、C语言 怎么返回一个数组
1、你想返回一个数组,因为你在一个函数内创建了数组,属于局部变量,所以他在stack部分,而stack部分是用后类似于销毁的,你返回的地址类似于一块垃圾的地址,所以编译警告。你要想返回函数内创建的数组地址的话需要
2、int*array=(int*)malloc(sizeof(int)*n);
3、}
这样这个数组建立在heap堆上,调用完函数还在,而你返回了那个堆上数组的首地址,这样就没问题了。
4、这样这个数组建立在heap堆上,调用完函数还在,而你返回了那个堆上数组的首地址,这样就没问题了。
5、楼上用static不推荐,用static的话会在整个程序的run time运行时都占用空间。而是用malloc,动态申请释放更合理。
三、C语言函数中返回数组
1、 int a[3],i;//定义的局部变量a[3]在调用完之后自动释放其空间
2、 return a;//返回的是指向数组a[3]的地址而不是数组a[3]本身
3、注:既然上面说到调用的方法返回的是指向数组a[3]的地址,所以主函数中b接收的应该是指向数组a[3]的地址,而数组a[3]在方法调用完后又被释放了,所以b接收不到数组a[3],故出错。
4、void pop(int a[],int n)//该方法传入两个参数,第一个是传入指向数组的地址,第二个参数是传入数组的长度,不需写返回语句return,只需通过指向数组的地址的传入就可以直接将数组b[]的值改变