数组指针和指针数组
每次看到代码中的数组指针或者指针数组都要纠结半天,所以下定决心区分这两个类型。
数组指针
形容词在前,名词在后所以这是一个指向数组的指针。
int (*p)[n]; //优先级()>[]>*
小括号优先级最高,所以这是一个指针,中括号其次所以这是一个数组指针。
指针数组
形容词在前,名词在后所以这是一个值全是指针类型的数组。
定义 int *p[n]; //优先级()>[]>*
中括号优先级大于,所以这是一个数组,数组中元素类型是即指针类型。
指针函数和函数指针
指针函数
指针函数:形容词在前,名词在后所以这是一个返回指针类型的函数
定义:类型标识符 *函数名(参数表)
int *f(x,y); //优先级()>[]>*
小括号优先级最高,需要参数,所以这是一个函数,*其次所以这是一个返回指针类型的函数。
函数指针
函数指针:形容词在前,名词在后所以这是一个指向函数的指针类型
定义:类型标识符 (*函数指针变量名)(参数)
int (*f) (int x); /*声明一个函数指针 */
小括号优先级最高,其次是,所以先是f,本质是个指针,所以这是一个指向函数的指针。