1.数组指针 (指针指向数组)
int a[10] = {1,2,3,4,5,6,7,8,9,0};
int (*p)[10];
p = &a;
&a 是一个数组的地址。
2.二维数组
求二维数组每一行的平均值并打印
3.指向函数的指针
一个函数在编译时被分配一个入口地址,这个函数的入口地址就称为函数的指针。
说明:(1)指向函数的指针变量的一般定义形式为
数据类型 (* 指针变量名)(函数参数表列)
(2)函数调用可以通过函数名调用,也可以通过函数指针调用。
int add(int a,int b)
{
return a + b;
}
int main(void)
{
int i = 10;int j = 20;
int (*pfn)(int ,int );
pfn = add;
pfn(i,j) ;
return 0;
}
其中 pfn(i,j)也可以写成add(i,j);
(3)“int(*p)(int,int);”表示定义一个指向函数的指针变量p,它不是固定指向哪一个函数的,而只是表示定义了这样一个类型的变量,它是专门用来存放函数的入口地址的。
(4)在给函数指针变量赋值时,只需给出函数名而不必给出参数.
(5)用函数指针变量调用函数时,只需将(*p)代替函数名即可(p为指针变量名),在(*p)之后的括号中根据需要写上实参。例如: c=(* p)(a,b);
(6)对指向函数的指针变量,像p+n、p++、P--等运算是无意义的。
4.返回指针值的函数
一般形式为 类型名 *函数名(参数列表)
返回的是地址。
5.指针数组
一维指针数组的定义形式为 类型名 *数组名[数组长度]
例如:int *a[10] 定义了一个指针数组,里面的元素都是指针。
指针数组比较适合于用来指向若干个字符串,使字符串处理更加方便灵活。
6.指向指针的指针
用字符指针数组作为函数参数实现二分查找
7.指针数组做main函数的形参
main函数可以这样写
实参是和命令一起给出的,也就是在一个命令行中包括命令名和需要传给 main函数的参数。命令行的一般形式为
命令名参数1参数2……参数n
利用指针数组作main函数的形参,可以向程序传送命令行参数