指向数组的指针,指向函数的指针

来源:互联网 发布:什么是面向对象的编程 编辑:程序博客网 时间:2024/06/07 17:20

指向数组的指针:int(*p)[5];

定义了一个指向数组元素为int型的元素个数为5的一维数组;

也可以理解为二维数组的首元素就像int*p指向int型可以理解为一维数组的首元素;

也可以理解为*p为一个指针,指针里面的内容是一个有5个int值的数组;*p=a[5];

其中,"类型说明符"为所指数组的数据类型。"*"表示其后的变量是指针类型。"长度"表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。注意,"*(指针变量名)"两边的括号不可少,如缺少括号则表示的是指针数组。

p指向二维数组的第一个元素a[0]; 其值等于 a,a[0],&a[0][0];

p+i 等于a[i];

*(p+i)+j等于 a[i][j];

指针数组:int* array[5];

表示数组元素为int型指针的一维数组;

指向函数的指针:int (*pfun)(parameter);

上面定义了 一个指向 返回值是int型, 参数是parameter 的形参的 函数指针pfun

typedef int (*PFUN)(int a, int b);

PFUN fun;

int a = (*fun)(2, 3);

返回指针的函数:int* fun(parameter);

返回指向函数的指针的函数:

//函数形式是set_handler(void(*f)())
//返回指向(返回值是void,参数是void的函数)指针
//可以理解为void (*tmp)();
//tmp = set_handler(void(*f())
void (* set_handler(void(*f)()))()
{
    cout << "set_handler" << endl;
    return f;
}