数组做函数参数传递和函数返回值
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》当传数据结构数组时不知道要特别注意点什么!!!
相关文章
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》当传数据结构数组时不知道要特别注意点什么!!!
相关文章推荐
- 轮盘赌算法
- Android 异步任务
- [android]fmodex在某些android设备上声音延迟Latency
- 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单等相关问题
- android pcm编解码
- NYOJ 860 又见01背包
- Editplus快捷键
- Ogre着色方式和光照模型(shading mode vs lighting model)
- php __set()和__get()函数
- USACO 4.3 Street Race&The Primes(跪了)
- 页面跳转的几种方法
- ios 耳机线控
- POJ-3267 The Cow Lexicon 简单DP
- flex可拖动的panel
- 用户身份的切换小结
- C++中指针和引用的区别分析
- 从解耦谈设计模式
- 最近的一些总结
- ****Android自定义组件之一:View详解
- 正则表达式