c语言中用函数传递数组的两个方法
2015-04-03 16:45
225 查看
#include <stdio.h>
#define GetLen(arr) sizeof(arr)/sizeof(int) //使用这种方式得到数组的长度
//这种方式也可以改变main方法中的数组元素的值
//缺点:每次都要传递5*4 20个字节的数组长度的数组形参
void f1(int a[]){
int i=0;
int len=GetLen(a);
for(;i<len;i++){
a[i]=i+10;
}
}
//这种方式也可以改变main方法中的数组元素的值
//优点:每次只要传递4个字节长度的指针变量即可
//缺点:数组的长度不好获取,在正常的开发中需要传入长度,当然也可以使用其他的方式获取
void f2(int * a){
int i;
int len=GetLen(*a);//$$1
printf("$$%d\n",len);
for(i=0;i<5;i++)
*(a+i)=i+20;
}
void main(){
int a[5]={1,2,3,4,5};
int i=0;
int length=GetLen(a);
printf("##%d\n",length); //##6
for(;i<length;i++)
printf("%d\n",a[i]);
f2(a);
i=0;
for(;i<length;i++)
printf("%d\n",a[i]);
}
#define GetLen(arr) sizeof(arr)/sizeof(int) //使用这种方式得到数组的长度
//这种方式也可以改变main方法中的数组元素的值
//缺点:每次都要传递5*4 20个字节的数组长度的数组形参
void f1(int a[]){
int i=0;
int len=GetLen(a);
for(;i<len;i++){
a[i]=i+10;
}
}
//这种方式也可以改变main方法中的数组元素的值
//优点:每次只要传递4个字节长度的指针变量即可
//缺点:数组的长度不好获取,在正常的开发中需要传入长度,当然也可以使用其他的方式获取
void f2(int * a){
int i;
int len=GetLen(*a);//$$1
printf("$$%d\n",len);
for(i=0;i<5;i++)
*(a+i)=i+20;
}
void main(){
int a[5]={1,2,3,4,5};
int i=0;
int length=GetLen(a);
printf("##%d\n",length); //##6
for(;i<length;i++)
printf("%d\n",a[i]);
f2(a);
i=0;
for(;i<length;i++)
printf("%d\n",a[i]);
}
![](http://my.csdn.net/uploads/201207/22/1342968619_9022.jpg)
相关文章推荐
- C语言传递数组到函数的一个发现
- 关于C语言数组在函数之间的传值方法
- 【C语言】数组名传递给函数,数组的sizeof变为4的原因
- C语言中,数组名作为参数传递给函数时,退化为指针
- C语言中,数组名作为参数传递给函数时,退化为指针
- 将数组安全地传递给函数的解决方法
- c语言中函数的形参是数组的时候,传递的是地址
- 数组作为函数参数的传递方法
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- c语言一维数组做参数传递给函数:
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- 【C】函数间传递多维数组的方法
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- c语言之函数参数传递之数组篇
- c语言中函数的形参是数组的时候,传递的是地址
- C语言中将二维数组作为参数传递给函数的方法
- C语言中将二维数组作为参数传递给函数的方法
- c语言中函数二维数组传递方法小结
- 〖C语言〗C语言一个函数传递无限制多参数(不确定参数函数)的方法
- 黑马程序员---------C语言 关于数组被当作函数参数传递的问题