函数名本质上就代表函数的首地址,数组名代表数组的首元素地址。
type (*ptr) (param)
函数指针 = 函数的指针,一个指针变量指向的地址存着一个函数.
//定义一个函数
void fuc1(int a){
cout << "this is fuc1 define" << a <<endl;
}
//声明函数指针
int (*fucptr)(int);
//函数指针fucptr指向函数fuc1
fucptr = fuc1;
//调用函数指针
fucptr(10);
type (*ptr)[size]
数组指针 = 数组的指针,一个指针变量指向的地址存着一个数组.
int array1[10] = {1, 1, 1, 1, 1, 1}; //定义一个数组
int (*arrayptr)[10]; //定义一个数组指针
arrayptr = &array1; //将数组指针指向一个数组的地址,这里要取数组的地址,不使用数组名(数组首元素的地址)
std::cout << *arrayptr << std::endl;
std::cout << **arrayptr<< std::endl;
type * fun(param)
指针函数 = 函数的返回值是一个指针.
int *p = null;
int *fuc1(int a){
p = &a;
return p;
}
type *ptr[size]
指针数组 = 数组中的元素全是指针
int a1=0, b=0, c=0, d=0;
int *arrayptr[10] = {&a,&b,&c,&d};
for(int i = 0;i<4;++i){
cout << arrayptr[i] <<endl;
}