c语言中,定义一个函数,函数输出结果是一个数组,整个的形式是怎么样的?

如题所述

提供两个办法:
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);//释放申请的空间.
}
数组的内容是不能一一传给函数的……
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-19
可以吧函数的输入部分加上这个数组,在函数体内改变数组的元素值,在主函数调用时就等于给主函数输出了一个数组。
例如
void main()
{
int i,num[5];
void ddt(int []);

ddt(num);
for(i=0;i<5;i++)
{
printf("%d ",num[i]);
}
}
void ddt(int num[5])
{
for(int i=0;i<5;i++)
num[i]=i+1;
}
在主函数中将输出1 2 3 4 5

c语言中,定义一个函数,函数输出结果是一个数组,整个的形式是怎么样的...
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.可以在主调函数中建立数组并把首地址和长度传给函数,在函数中创建一个动态数组,处理完后把动态数组的首地址返回...

怎么使C语言的函数返回值为一个数组
void Caller() \/\/ 这个函数调用SubFunction { char szText1[5], szText2[5]; \/\/ 当然这里也可以动态分配内存 SubFunction(szText1, szText2); \/\/ szText1, szText2就是带回的值 TRACE("%s %s\\n", szText1, szText2);}

C语言,输出一个数组
main(){ int r;int c;int array;int i,j;scanf("%d%d",&r,&c);\/*分配内存*\/ for(i = 0;i < r;i++){ array[i]= (int*)malloc(c);} \/*输入数组*\/ for(i = 0;i < r;i++){ for(j = 0;j < c;j++){ scanf("%d",&array[i][j]);} } \/*输出数组*\/ for(...

c语言自定义的函数如何返回一个数组
数组不可以直接返回,只能通过参数传递出来,比如: void fun(int* p); int main() { int a[100]; fun(a); return 0; } 希望能帮助你。

C语言中函数中传入一个数组,并且返回一个数组
include<stdio.h>int *arry ( int a[]);int main (){int a[]={0,1,0,1,1,0,1,0};int *b =arry(a) ; int i;for (i = 0;i<8;i++){printf ("%d " , a[i]);} return 0;}int *arry ( int a[]){ int i;for (i = 0;i<8;i++){if (a[i]==0...

C语言,输出一个数组
array[i] = (int*)malloc(c);} \/*输入数组*\/ for(i = 0; i < r; i++){ for(j = 0; j < c; j++){ scanf("%d", &array[i][j]);} } \/*输出数组*\/ for(i = 0; i < r; i++){ for(j = 0; j < c; j++){ printf("%d ", array[i][j]);} printf("\\...

c语言中函数返回值是指向一维数组的指针的函数怎么写?
double dA[3][2] = {{1.0,1.0},{1.1,1.0},{1.0,1.0}};double (*read(int n))[2]{ \/\/ 在gcc下编译,函数头有些奇怪,类似于表达式变量 \/\/ 楼上用typedef是正道 p = &dA[0];return p;} int main() { printf("dA[1][0]=%lf\\n",**(read(0)+1));return 1;} ...

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

C语言中函数定义形参为数组时的问题
1.数组为参数传递的是数组首地址,而不是元素的值,而你说的a[size]仅仅是值,况且事实上也没有a[size]这个元素 2.既然是数组名的传递,当然需要由一个数组的参数来接收,int v[]”的问题是因为他是形式参数,是为了接收数组的 n的问题是因为,如果只传递了数组,但是函数并找不到数组的个数,所以需要...

C语言 函数作为数组元素即定义一个数组中每一个元素都是一个函数的数 ...
回答:int (*(arry[10]))();

相似回答