库函数是已经定义和编译好的函数,同时可以使用标准库头文件提供其原型(函数声明在头文件中)。
C++函数的返回值不能是数组,但可以是整型,浮点型,指针,结构或者对象等。
按值传递和按地址传递:
int main()
{
void change(int a, int *p);//函数声明,按值传递和按地址传递
int x = 1, y = 2;
change(x, &y);//将x的值复制给a,将y的地址传给p
cout << x << y;//x=1,y=6
}
void change(int a, int*p)
{
a = 3;//不会改变x的值
*p = 6;//会改变y的值
}
传递数组:
int main()
{
void ar(int a[]);//传递数组指针,还应当传递一个数组长度的参数
int a[6];
ar(a);//数组名即为指针
}
void ar(int a[])
{
cout << a[2];
}
arr[i]==*(ar+i); &arr[i]==ar+i。
const double ar[]表示指针ar指向的是常量数据,不能使用ar来修改该数据。
指向数组中不同元素的指针相减结果为两个指针间元素的个数。
const:const int *p不能通过该指针改变其所指向的值,但可以通过其他指针来改变,或者改变该指针的指向。
int *const p不能改变指针的指向,但可以改变其所指向的值。
const int*const p=&a既不能改变其指向,也不能通过该指针修改其所指向的值,但可以通过其它指针修改。
int main()
{
int a = 32,b=10;
const int*p = &a;
int *point = &a;
int *const pt = &a;
*p = 12;//非法
*point = 20;//合法
p = &b;//合法
*p = 13;//非法
pt = &b;//非法
*pt = 24;//合法
}
如果变量为const,则指针也要为const。
字符串常量实际上是一段地址。
函数的递归。
函数的指针,如何使指针指向函数:
int main()
{
double pam(int);
double(*pf)(int);
pf = pam;
}
注意:pam的特征标必须和pf相同;estimate(50,pam)。上述代码也可以 auto pf=pam;