c语言关于指针数组、数组指针、函数指针等的个人理解

指针数组:本身是一个数组,存放的元素类型是指针,例如int*p[10],是一个存放十个int*类型的数据。

数组指针:本身是一个指针,指向的是一个数组,例如int(*p)[10],指向的是一个存放十个int类型的元素的数组。

通常,数组指针常作为一维数组的形参,通过下标得到相应的数组内容。指针数组常作为二维数组的形参,通过两次解引用得到对于的数组内容。

函数指针:本身是一个指针,指向一个函数,例如int(*p)(int,int),形参是两个int类型,返回类型是int类型。

通过函数指针来调用函数的时候,可以不对函数指针解引用,这是因为函数名本身就代表函数的地址,因此函数名与函数名取地址后的内容相同。

当通过typedef来自主创建一个类型名时,对于数组指针,应写成:

typedef   int(*ptr)[10];

而不是 typedef   int(*)[10] ptr;

同理,对于函数指针,应写成:

typedef   int(*ptr)(int,int);

而不是 typedef   int(*)(int,int)ptr;

即新创建类型名应当紧靠*。

你可能感兴趣的:(c语言,算法,开发语言)