扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一般是需要主函数提供保存数据的数组,在参数中给出数组起始地址,然后子函数在其中填充,比如要准会的整数是56
我们注重客户提出的每个要求,我们充分考虑每一个细节,我们积极的做好成都网站设计、成都网站建设服务,我们努力开拓更好的视野,通过不懈的努力,成都创新互联赢得了业内的良好声誉,这一切,也不断的激励着我们更好的服务客户。 主要业务:网站建设,网站制作,网站设计,小程序制作,网站开发,技术开发实力,DIV+CSS,PHP及ASP,ASP.Net,SQL数据库的技术开发工程师。
void fun(int *a,int b) { ... }
void main() { int a[20];
fun(a,56);
}
接楼上
所以,你的子函数定义应该是整形的,不能使双精度型的!因为你要返回的是数组的地址!
获取子函数的返回值/数组如下:
一、如果只有一个值要返回,那么用返回值
char * ptr。
int SIZE = 1024。
ptr = subFunc()。
int a=fun()。
int fun()。
fun(int a[], int size)。
if (null != (ptr_cmp = malloc(SIZE+1))。
memcpy(ptr_cmp, array_tmp, SIZE)。
二、数组是用循环达到依次赋值的目的
char * subFunc()。
*ptr_cmp = '\0'。
return ptr_cmp。
char * subFunc()。
char * ptr_tmp。
int array_tmp[1024] = {}。
void fun(int *a)。
只能用指针,如 int* cal();返回一个数组的首地址,根据首地址,将数组的元素依次输出
可以增加两个输出参数 如
void create(int **array, int *array_len)
{
*array = (int*)malloc(10*sizeof(int));
*array_len = 10;
}
调用:
int *array = NULL;
int array+_len = 0;
create(array , array+_len);
提供两个办法:
1.在主调函数中建立数组,将数组指针传给自定义的函数,处理后主调函数中的数组值也就变化了。
void fun(int a[],int n){
........
}//其中a[]就是要输入的数组,n是这个数组的长度。
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0};
fun(arry,10);
......
}
2.可以在主调函数中建立数组并把首地址和长度传给函数,在函数中创建一个动态数组,处理完后把动态数组的首地址返回主调函数,最后在主调函数中释放动态申请的内存。
int *fun(int a[],int n){
int *p=(int *)malloc(n*sizeof(int));//申请内存.
if(!p){//判断是否申请成功.
printf("failure..骇笭粪蝗荼豪讽通釜坤.");
exit(0);
}
memcpy(p,a,n*sizeof(int));//把主调函数的数组拷贝过来.
......
return p;
}
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0},*ptmp;
ptmp=fun(arry,10);
......
free(ptmp);//释放申请的空间.
}
数组的内容是不能一一传给函数的……
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流