区分数组指针和指针数组
一.数组指针
数组指针
概念:是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组。
格式:int (* p)[4];上一章已经阐述
二.指针数组
指针数组
概念:是一个数组里装着指针,也就是指针数组是一个数组。
写法:int * a[10]——有一个优先级;a先与[10]结合
1.指针数组的使用
#include<stdio.h>
int main()
{
int a=10;
int b=20;
int c=30;
int d=40;
int *p[4]={&a,&b,&c,&d};//指针数组,包含四个变量的地址
for(int i=0;i<4;i++){
printf("%d ",*p[i]);//*p[i]即输出指针数组第i个指针
}
return 0;
}
2.函数指针数组的使用
例子:封装三个函数,假如第一个函数a>b,输出大数;第二个函数a<b,输出小数;第三个函数a=b,输出两数之和;通过数组指针函数调用这三个函数。
#include<stdio.h>
#include <stdlib.h>
int getmax(int data1,int data2)
{
return data1>data2?data1:data2;
}
int getmin(int data1,int data2)
{
return data1<data2?data1:data2;
}
int getsum(int data1,int data2)
{
return data1+data2;
}
int main()
{
int a=10;
int b=20;
int ret;//输出结果值
int (*func[3])(int data1,int data2)={getmax,getmin,getsum};//函数指针数组
for(int i=0;i<3;i++){
ret=(*func[i])(a,b);
printf("%d ",ret);
}
return 0;
}