您的位置:首页 > 其它

数组做函数参数传递和函数返回值

2014-01-10 15:35 218 查看
原文地址::http://blog.chinaunix.net/uid-26725388-id-3136822.html

相关文章

1、请问在C语言中,函数传参时怎样利用指针传递数组----http://zhidao.baidu.com/link?url=w-4y9RobWaKrKEJsNOPyIYEQPkBlbfLIYd5ZmQXkwNsuCsnPy0O7fP4FqB83qkUXapv_rZSAPXjS6Y5mu6t6lq

数组做函数参数传递和函数返回值



函数不能返回一个数组,只能返回一个变量,或地址 。



一、一维数组



如果要将数组a[]传递给函数fun(),这个函数的定义中形参需要这样定义

void fun(int a[] ) 或者 void fun (int a[长度]) 调用的时候就可以直接使用fun(a)。



例:

#include <stdio.h>

int a[3]={5,3,2};

int *p(int a[])

{

a[0]=a[2];

return a;

}

int main()

{

int i;

int *b=p(a);

for(i=0; i<3; i++)

printf("%d ",b[i]);

return 0;

}



二、二维数组



如果要将数组a[][]传递给函数fun(),这个函数的定义中形参需要这样定义

void fun(int a[][6] ) 调用的时候就可以直接使用fun(a)。



例:用typedef 定义一个新的类型,详细用法参照博文(typedef_函数指针)



#include <stdio.h>

typedef int(*aa)[2];

int arr[3][2],i,j;

aa Exchange(int arr[][2])

{

int array[2][3]={{3,7,1},{9,4,2}};

for (i=0; i<=1; i++)

{

for(j=0; j<=2; j++)

{


arr[j][i] = array[i][j];


printf("%d ",array[i][j]);

}

printf("\n");

}

return arr;

}

int main()

{

int(*p)[2]; //一个二维数组的用法

p = Exchange(arr);

printf("输出数组\n");

for (i=0; i<=2; i++)

{

for(j=0; j<=1; j++)

{


printf("%d ",p[i][j]);

}

printf("\n");

}

return 0;

}


//=========================================================

备注::
1》当传数据结构数组时不知道要特别注意点什么!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: