您的位置:首页 > 编程语言 > C语言/C++

C++学习(八)函数基础

2010-01-19 10:43 417 查看
1.函数是C++的编程模块。要使用函数,必须提供定义和原型,并调用该函数。函数定义是实现函数功能的代码;函数原型描述了函数的借口:传递给函数的值的数目和种类以及函数的返回类型。函数调用使得程序将参数传递给函数,并执行函数代码。

2.函数的值传递,是通过C++的拷贝机制,形参是新变量,形参是实参的拷贝,这种形式保护了原始数据的完整性。

3.C++将数组名参数视为函数首元素的地址。从技术上讲,这仍然是按值传递的,因为指针是原始地址的拷贝,但函数将是偶那个指针来访问原始数组的内容。当且仅当声明函数的形参时,TypeName arr[]和TypeName* arr才是等价的。

4.C++提供了3中便是C-Style字符串的方法:字符数组、字符串常量和字符串指针。它们的类型都是char*(char指针),因此被作为char* 类型参数传递给函数。

5.C++提供string类表示字符串,string对象既可以作为函数参数传入,也可以作为函数返回值返回,使用size()方法可以知道string对象的长度

6.C++处理结构和基本类型一样,按值传递。如果结构比较大,可以用结构指针作为函数参数,这样效率会非常高。

7.理解二维数组作为函数参数进行传递,理解指向指针的指针

二维数组作为参数传递,两种声明方式:
int sum(int (*arr)[4], int size);//arr是指针,不是数组。arr是数组指针,指向包含4个int型元素的数组
int sum(int arr[][4],int size);
上面的声明方式,只需要指定列数,行数作为另一个参数进行传递

ar2[r][c] == *(*(ar2+r) + c)
ar2//指向二维数组第一行的数组指针(一维数组的指针),ar2也是指向指针的指针
ar2+r//指向第r行的数组指针
*(ar2+r)//第r行的一维数组,同时也是第r行一维数组的指针(首元素地址)
*(ar2+r)+c//第r行的一维数组的第c个元素地址
*(*(ar2+r)+c)//ar2[r][c]的值

8.函数指针:函数的地址是存储其机器语言代码内存的开始地址。
获取函数的地址:使用函数名就可以获得函数的地址。
声明函数指针:声明指向函数的指针时,必须声明指定指针指向的函数类型。
double pam(int);
double (*pf)(int);
调用函数时,double y = (*pf)(5)或者double y = pf(5)都可以。
第一种:*pf是函数,采用函数的调用方式。
第二种:函数名就是指向函数的指针,指向函数的指针的行为应与函数名相似。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: