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

常量指针与指针常量

常量指针(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])。

相关推荐
Qt程序员2 小时前
Linux RCU 原理与应用
linux·c++·内核·linux内核·rcu
MartinYeung52 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen872 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
王老师青少年编程3 小时前
信奥赛C++提高组csp-s之搜索进阶(记忆化搜索案例实践3)
c++·记忆化搜索·方格取数·csp·信奥赛·csp-s·提高组
Flandern11113 小时前
Pull Requests(PR)
学习·github·pr
nashane3 小时前
HarmonyOS 6学习:JsCrash“闪退”法医指南——从FaultLog堆栈还原崩溃现场的终极手册
学习·华为·harmonyos
for_ever_love__4 小时前
UI学习:UICollectionView瀑布流
学习·ui·ios·objective-c·cocoa
Titan20244 小时前
Linux动静态库
linux·服务器·c++
AOwhisky4 小时前
MySQL 学习笔记(第六期):MySQL 备份与恢复
运维·数据库·笔记·学习·mysql·云计算
_李小白4 小时前
【android opencv学习笔记】Day 32:直线检测之霍夫变换
android·opencv·学习