深入理解指针:常量、函数与数组

常量指针与指针常量

常量指针(Pointer to Constant)

常量指针指向的值不可修改,但指针本身可以指向其他地址。

c 复制代码
const int *ptr;

ptr可以指向不同的int类型变量,但通过ptr修改指向的值(如*ptr = 10;)会报错。

指针常量(Constant Pointer)

指针本身是常量,即指针的指向不可修改,但指向的值可以修改。

c 复制代码
int *const ptr;

ptr必须初始化且不能指向其他地址,但可以通过ptr修改指向的值(如*ptr = 20;)。


函数指针与指针函数

函数指针(Pointer to Function)

指向函数的指针,存储函数的入口地址,用于动态调用函数。

c 复制代码
int (*funcPtr)(int, int); // 声明一个函数指针
funcPtr = &add;          // 指向函数add
int result = funcPtr(2, 3); // 调用函数

指针函数(Function Returning Pointer)

返回指针类型的函数,本质是函数而非指针。

c 复制代码
int *createArray(int size) {
    return malloc(size * sizeof(int));
}

指针数组与数组指针

指针数组(Array of Pointers)

数组元素均为指针,常用于存储字符串数组。

c 复制代码
char *strArray[3] = {"hello", "world", "!"};

strArray是一个包含3个char*类型指针的数组。

数组指针(Pointer to Array)

指向整个数组的指针,常用于多维数组操作。

c 复制代码
int (*arrPtr)[4]; // 指向包含4个int的数组
int matrix[3][4];
arrPtr = matrix;  // 指向matrix的第一行

通过arrPtr可访问二维数组的行(如arrPtr[1][2])。

相关推荐
stm32 菜鸟5 小时前
nucleo-f411re学习记录-12,Wifi模块ESP8684
学习
stm32 菜鸟8 小时前
nucleo-f411re学习记录-9,双轴XY摇杆传感器
学习
南子北游8 小时前
Python学习(基础语法1)
开发语言·python·学习
张健11564096488 小时前
使用信号量限制并发数量
开发语言·c++
jc06208 小时前
6.1云原生之Docker
c++·docker·云原生
Atri厨9 小时前
X86存储器的段描述符学习随笔
学习
星幻元宇VR9 小时前
VR航空航天科普设备助力航天知识普及
人工智能·科技·学习·安全·vr·虚拟现实
d111111111d9 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
寒秋花开曾相惜10 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
叶子野格10 小时前
《C语言学习:指针》12
c语言·开发语言·c++·学习·visual studio