从语文的角度来理解:一般修饰词在前,主语在后。
-
指针数组:实质是一个数组,为什么指针作为修饰词,因为这个数组里面的元素全部都是指针变量。
例如,定义一个包含3个整型数的数组int nums[3] = {1, 2, 3};
定义一个指针数组
int * ptrArray[3];
ptrArray[0] = &nums[0];
通过指针数组可以访问
nums
数组中对应的元素:*ptrArray[0]
即为1
; -
数组指针:实质是一个指针,为什么数组作为修饰词,因为这个指针指向的是一个数组。
例如,定义一个包含3个整型数的数组
int nums[3] = {1, 2, 3};
定义一个指向具有3个整型数字的数组的指针
int (*ptrToArray)[3] = &nums;
-
指针函数:实质是一个函数,为什么指针作为修饰词,因为这个函数返回的是一个指针。
例如,
#include <stdio.h> // 定义一个指针函数,该函数返回一个指向整型的指针 int* getLarger(int a, int b) { static int result; // 使用静态变量以确保其生命周期超出函数调用 if (a > b) { result = a; } else { result = b; } return &result; // 返回指向结果的指针 } int main() { // 调用指针函数,并接收返回的指针 int *ptr = getLarger(5, 10); // 通过指针来访问并输出结果 printf("The larger value is: %d\n", *ptr); // 输出结果:The larger value is: 10 return 0; }
-
函数指针:实质是一个指针,为什么函数作为修饰词,因为这个指针指向一个函数。
例如,
#include <stdio.h>
// 定义一个返回值为整型,且接收两个整型参数的函数
int add(int a, int b) {
return a + b;
}
int main() {
// 定义一个函数指针,该指针指向一个返回值为整型,且接收两个整型参数的函数
int (*funcPtr)(int, int) = add;
// 通过函数指针来调用函数,并输出结果
int result = funcPtr(3, 4);
printf("The result is: %d\n", result); // 输出结果:The result is: 7
return 0;
}