编程初学者学习:指针

如你所知,在编程中我们常常会遇到一个叫做句柄的概念。特别是在 Windows 编程中,使用句柄是避免不了的。进一步去搜索句柄(handle)这个单词的原始含义时,会搜到 handle: n. 把手,把柄 等概念,让人更是一头雾水。

因此在使用过程中,很多新手常常会把句柄和指针这两个概念进行混淆。

如果你也有这样的疑惑,那么请带着疑惑一起来阅读下文吧。

指针是什么?

在了解句柄和指针的异同前,我们得重新回顾一下大家都比较熟悉的指针。

那么指针到底是什么呢?指针属于一种派生(复合)类型,是由其他类型衍生出来的,如函数或对象类型,而其值是一个整型数字,用于表示地址值。

在不考虑 void* 这种特殊指针情况下,可以通过解引用运算符 * 来对指向内容进行间接的操作。如果是函数指针,则结果为函数指示符。如果是对象指针,则结果为对象的引用。

下面是一个学习指针的经典入门示例,"两数交换"

复制代码
#include <stdio.h>
​
void swap(int* a, int* b) {
    int tmp = *a;
    *a      = *b;
    *b      = tmp;
}
​
int main() {
    int x = 3;
    int y = 4;
    swap(&x, &y);
    printf("x = %d y = %d\n", x, y);
}

这里我们假设两个变量 x, y 的地址分别是 0x00100x0020 。然后调用 swap(*, *) 函数,并将地址传入,此时函数的两个参数记录着 0x00100x0020 。然后在函数体内通过解引用运算符 * 获得 x, y 的实体,这样就能实现跨模块对我们希望操作的对象进行操作。

相关推荐
世人万千丶9 小时前
参数管理_Flutter在鸿蒙平台路由参数最佳实践
学习·flutter·华为·harmonyos·鸿蒙
遇乐的果园11 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园13 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
从零开始的代码生活_13 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
可乐奶茶sky14 小时前
AI Agent 学习
人工智能·学习
茯苓gao14 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
RD_daoyi16 小时前
外链权重暴跌至13%,品牌提及反超传统链接——2026年不做Digital PR,你的独立站等于隐形
运维·网络·学习·机器学习·搜索引擎
chase。16 小时前
【学习笔记】PointWorld:迈向通用机器人操控的3D世界模型
笔记·学习·机器人
AOwhisky17 小时前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
前端世界17 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql