数组类型、函数类型
我们声明一个数组,这里数组类型为int[3]
int main()
{
int a[3];
}
假如我们有一个函数fun()
int fun(int val)
{
return val + 1;
}
那么这个函数的类型应该是int(int)
。
数组的类型可以用来声明或者定义一个数组,比如以下代码可以通过编译。
#include <iostream>
using k = int[3];
k a{1, 2, 3};
int main()
{
return 0;
}
但是一个函数的类型只能用来声明一个函数,比如下面代码可以通过编译。
#include <iostream>
using F = int(int);
F fun;
//F fun{}; 报错
int main()
{
return 0;
}
数组指针、函数指针
数组类型可以用来定义数组指针。
#include <iostream>
using k = int[3];
//注:int* a[3] 表示a是一个包含三个元素的数组,每一个元素是一个int*类型的对象
k* a; //定义一个指向int[3]类型的指针。 int(*a)[3]
int main()
{
return 0;
}
函数类型可以用来定义函数指针。
#include <iostream>
using F = int(int);
int add(int val)
{
return val + 1;
}
//F fun{}; 报错
int X(F* subFun, int val)
{
int tmp = (*subFun)(val);
return tmp * tmp;
}
int main()
{
F* fun = &add;
std::cout << X(fun, 3) <<std::endl;
return 0;
}