c语言之 指针 函数指针 指针数组
指针变量的分析原则 : 从变量名起,根据运算符优先级结合,一步一步分析。 ( 从 p 开始后要把小括号去掉 )
指针,指向什么( X ), X 是什么类型的
Int *p; // 首先从 P 处开始,先与 * 结合,说明 P 是一个指针,然后再与 int 结合,说明指针所指向的内容的类型为 int 型,所以 P 是一个返回整形数据的指针
Int *p[3]; // 首先从 P 处开始,先与 [] 结合所以 P 是一个数组,然后再与 * 结合,说明数组里的元素是指针类型,然后再与 Int 结合,说明指针所指向的内容类型是整形的,所以, P 是一个由返回整形数据的指针所组成的数组;
Int (*p)[3]; // 首先从 P 处开始,先与 * 结合,说明 P 是一个指针,然后再与 [] 结合,说明指针指向的内容是一个数组,然后再与 int 结合,说明数组里的元素是整形的,所以 P 是一个指向整形数据组成的数组的指针;
Int p(int); // 首先从 P 处开始,先与 () 结合,说明 P 是一个 函数 ,然后进入 () 里分析,说明函数里有一个整形变量的参数,然后再与外面的的 int 结合,说明函数返回值是一个整形数据;
Int (*p)(int); // 首先从 P 处开始 , 先与指针结合,说明 P 是一个指针,然后与 () 结合,说明指针指向一个函数,然后再与 () 里的 int 结合,说明函数有一个 int 型的参数,再与最外层的 int 结合,说明函数的返回值类型为 int ,所以 P 是一个 指 向 有一个整形参数且返回类型为整形的 函数的指针 。
指针是一个特殊的变量,它里面存储的数字被解释成为内存里的一个地址。要搞清楚一个指针需要搞清指针四个方面的内容: 指针本身所占的内存区、指针的值或者叫指针所指向的内存区、指针的类型 、 指针所指向的类型。