1.基本函数
定义:不想介绍。
2.函数与数组
常用两个参数来表示数组:
1.使用指针来表示数组的开头地址
2.数组元素个数
使用指针来表示数组
在c/c++中,常用数组名视为指针。c++将数组名解释为第一个元素的地址。例:
这一规则有两个例外情况:1.数组声明用数组名来标记存储位置。2.对数组名使用sizeof来得到数组的长度(字节单位)。
在c++中,当(且仅当)在函数头或函数原型中,int* Y与int Y[ ]相等。当指针指向数组
第一个元素时,使用数组表示法。当指针指向普通变量时,使用指针表示法。
下列等式恒成立:
int Y[i]=*(Y+i);
填充数组,使用cin,步骤:
判断是否输入的数/字符,是否符合规定,不符合的剔除。使用cin.clear( ),并要用cin.get()读取并判断是否为"\n",不是就要继续读取。
显示数组,用const保护数组
由于函数形参是使用数组名来表示数组,它使用的是数组的原始数据,如果只是单纯的显示数据不需要改变数据,需要const保护数组不被改变。不像基本变量,当做形参时是使用拷贝,所以不用const保护。例:
void show_array(const double ar[ ],int n);
该声明表明指针ar指向的常量数据。只有定义了const数组的函数才不能改变数组,对其他没有定义的没有影响。
使用数组区间的函数
除了上述定义形参的方法,还可以使用两个指针作为形参,一个头指针,一个尾指针。尾指针是指向最后一个数据后面地址的指针。例:
int show_array(const int* begin,const int* end);
指针与const
指针有两种使用const的情况:
1.让指针指向一个常量指针:
const int * pr=&age;
指针pt指向一个const int常量。也就是*pt是一个常量。
按理来说,*pt的值将不能改变,但是指针有这另一种改变值的方式。如上例子,发现age不是const,于是可以使用改变age的地址来改变*pt的值。
2.让指针指向的地址不变
int * const pr=&age;
这里不能改变指针地址,但是可以通过改变*pr的值来改变age的值。
3.还可以两个同时const
const int* const pr= &age;
注意,可以左边指针一方const,也可以指针和右边数据一起const,但是不能只将右边数据一方const.
const int age=1.63;
int* pr= &age;//不允许
3.函数与二维数组
函数中使用二维数组作为形参,主要还是将化为指针。
int Y[i][j];
定义int Y[][j]是指针。指向第一个大元素。
二维数组不能使用const。
4.函数与c风格字符串
使用const来保护字符串。
和char数组用法相似。
函数不能直接返回一个字符串,只能返回一个字符串地址。
5函数与结构
有3种作为形参的方式
1.按值传递
结构体按值传递,作为形参是使用对数据的拷贝。因此可以不使用const保护。例:
2传递结构的地址
- 调用函数时将地址(&Y)传递给它。
- 将形参声明为指向polar的指针,及polar*.由于函数不该修改结构,使用const保护。
- 由于形参是指针不是结构,所以使用(->)不是(.)