函数、数组和指针的形参
来源:互联网 发布:爱易编程工具箱 编辑:程序博客网 时间:2024/05/21 09:45
关于函数的形参
有一点要注意,只有在函数原型或者是函数定义头中,才可以使用int a[]代替int *a;如:
int sum (int a[],int n);int *a形式和int a[]形式都表示a是指向int的指针。但是,int a[]只能用于声明形式参量。第二种形式(int a[])则是提醒指针a指向的不止只一个int型变量,还是一个int类型数组的元素。
声明数组形参
因为数组名是该数组首元素的地址,作为实际参数的数组名要求形式参数是一个与之匹配的指针。只有在这种情况下,c才会把int a[]和int *a解释成一样的。所以以下四种方式是等价的:
int sum(int *a,int n);
int sum (int *,int n);
int sum(int a[],int n);
int sum(int [],int );但是在函数定义中不能省略参数名。如下面两种形式等价:
int sum(int *a;int n){ //内容已经省略}
int sum(int a[],int n){ //省略}
使用指针形参
#include <stdio.h>#define SIZE 10int sump(int *start,int *end);int main(){ int marbles[SIZE]={20,10,5,39,4,16,19,26,31,20}; int answer; answer = sump(marbles,marbles + SIZE); printf("The total number of marbles is %ld.\n",answer); return 0;}int sump(int *start,int *end){ int total = 0; while(start<end) { total += *start; start++; } return total;}(程序来自c primer plus 第六版人名邮电出版社)
注意程序中有一点很值得借鉴,sump()函数中while循环使用两个指针来结束循环,while(start<end)时跳出循环,用end指向末尾,start指向开头,简单易懂以后要在涉及到数组指针问题的时候要多用这种方法。其实也可以把循环体压缩成如下写法:
total += *start++;这样可以使程序更加精简,不过也更加难懂降低了可读性,再理解透彻以后也可以尝试多用用。
0 0
- 函数、数组和指针的形参
- 数组指针,指针数组,函数指针,指针作为形参和返回值的注意事项
- 数组指针、 指针数组、函数指针、函数指针数组和指向函数指针数组的指针
- 简述指针数组 数组指针 函数指针 函数指针数组和函数指针数组的指针
- 指针函数、数组指针、函数指针、函数指针数组和指向函数指针数组的指针
- 多维数组指针和函数形参
- 函数指针和指针函数,数组指针和指针数组(纠结的指针啊
- C语言 指针和指针数组作main函数的形参
- 指针数组和数组指针的区别&指针函数和函数指针的区别
- 函数指针,指针数组和数组指针
- 数组指针,指针数组和函数指针
- 指针数组 和 数组指针分析 main函数的参数
- 指针数组和数组指针的区别以及main函数
- 从main函数学指针数组和指针的指针
- 一个复杂的声明,包含数组指针,指针数组,函数指针和指针函数的区别
- 数组指针和指针数组的区别、指针函数与函数指针的区别
- 函数指针和指针函数 数组指针和指针数组
- 数组指针和指针数组,函数指针和指针函数
- 修改文件的权限
- 爬虫入门(一)
- i++底层问题
- linux mysql导入数据库
- 单例设计模式
- 函数、数组和指针的形参
- 有关深度学习领域的几点想法
- Mybatis实现数据的增删改查(CRUD)
- 多线程同步问题-练习题3-笔记整理
- SpringBoot非官方教程 | 第十五篇:Springboot整合RabbitMQ
- AngularJS 组件化
- 基础反病毒工具入门系列
- 机器学习路线图(附资料)
- hive环境---安装系列五