常量指针与指针常量
常量指针(Pointer to Constant)
常量指针指向的值不可修改,但指针本身可以指向其他地址。
const int *ptr;
ptr可以指向不同的int类型变量,但通过ptr修改指向的值(如*ptr = 10;)会报错。
指针常量(Constant Pointer)
指针本身是常量,即指针的指向不可修改,但指向的值可以修改。
int *const ptr;
ptr必须初始化且不能指向其他地址,但可以通过ptr修改指向的值(如*ptr = 20;)。
函数指针与指针函数
函数指针(Pointer to Function)
指向函数的指针,存储函数的入口地址,用于动态调用函数。
int (*funcPtr)(int, int); // 声明一个函数指针
funcPtr = &add; // 指向函数add
int result = funcPtr(2, 3); // 调用函数
指针函数(Function Returning Pointer)
返回指针类型的函数,本质是函数而非指针。
int *createArray(int size) {
return malloc(size * sizeof(int));
}
指针数组与数组指针
指针数组(Array of Pointers)
数组元素均为指针,常用于存储字符串数组。
char *strArray[3] = {"hello", "world", "!"};
strArray是一个包含3个char*类型指针的数组。
数组指针(Pointer to Array)
指向整个数组的指针,常用于多维数组操作。
int (*arrPtr)[4]; // 指向包含4个int的数组
int matrix[3][4];
arrPtr = matrix; // 指向matrix的第一行
通过arrPtr可访问二维数组的行(如arrPtr[1][2])。