数组的函数传递的两种方式(数组名和指针)
2016-07-25 21:54
429 查看
#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]);
}
相关文章推荐
- 网络基础知识点总结1
- poj 1039
- Git自学之路(三)- Git打标签
- ABAP中对变式的处理
- 二叉树的序列化和反序列化
- Subsequence(hdu 3530)
- 信息安全管理(4):信息安全系统的技术规范模型
- 朴素的完全背包
- 正则表达式介绍及常见用法
- Hibernate 入门示例
- 4632 NOIP[2015] 运输计划
- Hibernate学习笔记----Session管理和批量操作
- java设计模式_原型模式
- 使用SpringMVC实现文件上传功能
- Exception in thread "main" java.lang.AbstractMethodError: weblogic.server.channels.ServerChannelImpl
- [状态机]嵌入式设计模式:有限状态自动机的C语言实现
- 如何使用SAP发送邮件?
- JDNI学习总结(一)
- 大数据基础(六) Matlab R2015b MDCE分布式计算环境搭建
- IntelliJ IDEA应用第一步