数组
来源:互联网 发布:三国志11 mac 打不开 编辑:程序博客网 时间:2024/05/16 01:43
1、数组声明时清空
int main(){ int a[5] = {0}; //清空 int i = 0; for(i = 0 ; i< 5 ; i++) printf("[%d]",a[i]); # [0][0][0][0][0] printf("\n"); return 0;}int main(){ int a[5] = {1}; //从第二位开始清空 int i = 0; for(i = 0 ; i< 5 ; i++) printf("[%d]",a[i]); # [1][0][0][0][0] printf("\n"); return 0;}
2、不指明元素个数的申明
int main(){ int a[] = {1,2,3,4}; int count = sizeof(a)/sizeof(int); printf("count:%d\n",count); # count:4 ,编译器隐形设置为4个元素 return 0;}int main(){ char a[] = "strlen(a)=13"; int count = sizeof(a); #13,隐形设置为13位的字符串,最后一位为'\0' printf("count:%d\n",count); return 0;}
3、数组作为函数形参
PS:在形参中定义数组时在数组名后面跟一个空的方括号,有时为了在被调用函数中处理数组元素的需要,可以另设一个参数,传递需要处理的数组元素的个数
int average(int arr[],int n)//int average(int arr[5],int n) 传入arr[5]没有意义,因为C编译器对形参数组大小不做检查,只是检查实参数组的首地址传给形参数组。{ int i=0,ave = 0; for(i=0;i<n;i++) { ave += arr[i]; } ave /= n; return ave;}void show(int arr[]){ //此时arr地址=实参a[5]的首地址(固定的),arr在执行过程中是可变的 printf("[%d]",*arr); arr++; printf("[%d]",*arr); }int main(){ int a[5] = {2,3,4,5,6}; int b = average(a,5); printf("b:%d\n",b); //b:4 a++; //无法编译通过,数组首地址是不能变的 show(a); return 0;}
0 0
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 区间最值——单调队列の板子
- 第11周项目1-验证算法(1)层次遍历算法的验证
- 70. Climbing Stairs (Easy)
- 跟我一起写Makefile:使用函数
- 导航栏 透明
- 数组
- Rest架构风格的理论理解
- 关于cmake+mingw+yasm+vs 生成工程 编译代码问题总结
- 第九周 项目2 对称矩阵压缩存储的实现与应用(2)
- 第十一周--层次遍历算法的验证
- 开源的项目
- mysql性能优化学习与实战-2
- 安卓简单技术-MyThread实现简单定时
- 导航栏设置背景,去掉下面的黑线