1.指针数组(指针的数组)
例:
arr和[]在一起,说明arr一定是长度为10的数组,数组的类型为int*;
2.数组指针(数组的指针)
例:
brr和*在一起,说明brr一定是指针,该指针指向长度为4的int数组
int arr[4] = {0};
int (*brr)[4] = &arr;// brr 期望的是 int (*)[4] 类型,&arr表示arr整个数组的地址
注:在二维数组传参的时候为什么要这么传呢?(void arry(int (*arr)[4],int lows)
在计算机中没有二维的概念,二维数组其实都是每一个一维数组按照行排列在一起的
所以我们在给二维数组传参的时候参数为:1.int (*arr)[4]//表示一个指向数组的指针2.int lows//表示有多少行。共同构成一个二维数组
3.指针函数(指针的函数)
例:
arry和()在一起,说明arry一定是函数,参数为int,int。返回值为int*。返回指针的函数,简称指针函数
4.函数指针(函数的指针)
例:
h和*在一起,h一定是指针,指向函数。函数参数为int,int。返回值为int
可以用于:
标准规定:函数名也表示函数的地址。//max=&max
int max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
int main()
{
int a = 10;
int b = 20;
int (*p)(int,int) = max;// 正确声明函数指针,指定参数类型
// 调用函数指针
int result = p(a, b); // 等价于 max(a, b)
return 0;
}
总结
概念 | 本质 | 核心语法 | 典型用途 |
---|---|---|---|
指针数组 | 数组 | type *array[size]; | 存储多个指针(如字符串数组) |
数组指针 | 指针 | type (*ptr)[size]; | 操作多维数组或传递数组边界 |
指针函数 | 函数 | type *func(params); | 返回指针类型(如动态内存分配) |
函数指针 | 指针 | type (*ptr)(params); | 动态调用函数或实现回调机制 |