强制类型转换符
C++有四种强制类型转换符
- dynamic_cast:将基类的指针或引用安全地转换为子类的指针或引用
- const_cast:将常量指针或引用被转化成非常量的指针或引用,来修改常量
- static_cast:子类指针或引用向上转换成基类(安全),基类指针或引用向下转换成子类(不安全),基本数据类型之间的转换,空指针转换成目标类型的空指针,任何类型的表达式转换成void类型
- reinterpret_cast:用来处理无关类型之间的转换,它会产生一个新的值,这个值会有与原始参数有完全相同的比特位
指针
一级指针和二级指针
float(**a)[10];
a是一个二级指针,指向一个一维数组的指针,数组元素为float类型
double*(*b)[10];
b是一个一级指针,指向一个一维数组,数组元素为double*类型
double(*c[10])();
c是一个10个元素的数组,数组元素为指向函数类型为没有参数且返回double的函数指针
int*((*d)[10]);
同int(d)[10];d是一个一级指针,指向一个一维数组,数组元素为int*类型
long (*e)(int)
e是一个一级指针,指向函数类型为参数为int且返回long的函数指针
int (*(*f)(int, int))(int)
f是一个一级指针,指向函数类型为参数有两个int且返回一个函数指针的函数,返回的函数指针指向类型为参数为int且返回int的函数
函数指针和函数返回指针
函数指针
void (*f) ();
函数返回指针
void* f();
函数指针的使用
#include <cstdio>
int max(int x, int y)
{
return x > y ? x : y;
}
int main()
{
int max(int, int);
int (*p) (int, int) = &max;
int a, b, c, d;
scanf(“%d %d %d”, &a, &b, &c);
d = (