qyhf.net
当前位置:首页 >> 数组返回值怎么写 >>

数组返回值怎么写

返回数组是一个很不好的习惯,因为你无法真正的返回一个数组,而是返回一个指向数组首地址的指针.如果你真的需要一个数组应该这么做,int func(int * array, int max);第1个参数是数组的首地址,比如你有int a[20], 那么就传a,不过必须先初始化,max表示你传入的数组的长度,即函数中对数组的操作不能超过max,否则越界,返回值是实际有效的数组元素个数.

不能返回数组,用return 只能返回单个的值,但是你可以返回数组的地址,但是这个数组不能是局部变量,可以是形参.

int a[10]; 声明int * f(); 返回int数组指针 定义 int *f() { return a; }

这是不行的,但是你可以返回一个指针,该指针指向数组的首地址 #include "stdafx.h"#include <iostream>using namespace std;#define N 5//指定数组的维数int *p()//定义一个数组指针,返回值是指针{ int *arr=new int[N];//这里用new的话必

指向一维数组的指针就是一个数组指针,定义一个数组指针是int (*b)[4],所以函数应该是int (*)[N]f(),N为一维数组的维数.

返回数组名就行了,在主函数中用指针接收返回值. #include double *copy1(double array[],double c1[],int n); double *copy2(double array[],double c2[],int n); void main(void) { int size=4; double source[4]={1,2.3,4.5,6.7}; double first_copy[4]; double

C语音没有直接返回一个数组的说法,要得到一个数组的返回值,一般做法有几点:1. 传入一个指向数组指针变量,在函数内部对指针地址内的值进行修改2. 函数内部申请动态内存,将数据保存到这块内存后返回该动态内存的指针,最后需要手动释放这块内存3. 使用静态变量(这个方法不建议使用,静态、全局变量很容易导致多线程编程出问题)

#include <stdio.h>#include <stdlib.h>int* CreateArr(int n = 1){ int *arr = (int*)malloc(sizeof(int)*n); return arr;}int main(){ int i; int *a = CreateArr(10); for(i = 0; i < 10; ++i){ a[i] = i+1; printf("%d\n", a[i]); } return 0;}

这个问题一个较为妥善的方法是把数组定义在主函数,再传入数组地址给自定义函数,如果你非要在自定义函数里定义也行,至于是否需要设置为static,那得看情况,因为函数退出时栈空间并不是马上被刷新,如果你能保证该栈空间在你访问前没被释放就没必要定义为static,但是保险起见定义static更好,因为你可能不知道到底该内存是不是被重新写入了数据,至于你说要返回指向指针的指针,我举个例子,int** fun(),这个就是返回一个指向指针的指针,其指向的指针指向int型,呵呵,明白了没

C/C++都不能以数组作为函数返回值!

网站首页 | 网站地图
All rights reserved Powered by www.qyhf.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com