数组指针
- 数组指针是指向数组的指针。换句话说,它是一个指针,指向数组的首地址。
- 声明数组指针时,需要指定指针所指向的数组的类型。
要定义一个数组指针,需要首先确定数组的类型,然后声明一个指向该类型数组的指针。这里是一个简单的示例:
假设有一个包含5个整数的数组:
int arr[5] = {1, 2, 3, 4, 5};
现在,想要定义一个指向这个数组的指针,可以这样做:
int (*ptr)[5]; // 定义一个指向包含5个整数的数组的指针
这里 (*ptr)
表示这是一个指针,[5]
表示指针所指向的是包含5个整数的数组。然后,可以将数组的地址赋给这个指针:
ptr = &arr; // 将数组的地址赋给指针
现在 ptr
指向了数组 arr
的首地址
我们这就定义了一个简单的数组指针
指针数组
- 指针数组是一个数组,其元素都是指针。
- 声明指针数组时,需要指定数组的类型和指针的个数
接下来我们第一个指针数组
声明一个包含三个整形指针的指针数组
int num1 = 10, num2 = 20, num3 = 30;
int *ptrArray[3];
将整数指针指向对应的整数变量地址
ptrArray[0] = &num1;
ptrArray[1] = &num2;
ptrArray[2] = &num3;
访问指针数组中的元素,并输出对应整数的值
printf("num1 = %d\n", *ptrArray[0]);
printf("num2 = %d\n", *ptrArray[1]);
printf("num3 = %d\n", *ptrArray[2]);
这个示例中,ptrArray
是一个包含3个整数指针的指针数组。通过将这些指针分别指向 num1
、num2
和 num3
的地址,我们可以通过 ptrArray
访问和操作这些整数变量
函数指针
- 函数指针是指向函数的指针,它存储了函数的地址。
- 声明函数指针时,需要指定函数的返回类型和参数列表。
- 可以使用函数指针来间接调用函数,这在编写回调函数等场景中很有用。
进行一个简单的函数指针定义:
定义一个函数,该函数接受两个整数参数并返回它们的和
int add(int a,int b){
return a+b;
}
声明一个指向具有两个整数参数和整数返回类型的函数的指针
int (*ptrFunc)(int, int);
将函数指针指向 add 函数
ptrFunc = add;
使用函数指针调用 add 函数,并输出结果
int result = ptrFunc(3, 5);
printf("Result: %d\n", result);
ptrFunc 是一个指向具有两个整数参数和整数返回类型的函数的指针。然后,我们将它指向了 add 函数。通过函数指针 ptrFunc 调用 add 函数,得到了结果并输出。
总结
- 指针数组用于存储指针,便于管理多个指针。
- 函数指针用于指向函数,可以动态地调用不同的函数。
- 数组指针用于指向数组,使得可以通过指针访问数组的元素。