大开眼界,原来指针还能这么玩?

文章目录
- 第一阶段:基础理解
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第二阶段:指针与数组
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第三阶段:指针与字符串
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第四阶段:指针与函数
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第五阶段:复杂指针与多级指针
- 目标:
- 内容:
- 题目:
- 答案解析:
🌈你好呀!我是 山顶风景独好
🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊
🌸愿您在此停留的每一刻,都沐浴在轻松愉悦的氛围中。
📖这里不仅有丰富的知识和趣味横生的内容等您来探索,更是一个自由交流的平台,期待您留下独特的思考与见解。🌟
🚀让我们一起踏上这段探索与成长的旅程,携手挖掘更多可能,共同进步!💪✨
第一阶段:基础理解
目标:
理解指针的基本概念、声明、初始化和基本操作。
内容:
指针的基本概念:指针是存储内存地址的变量。
指针的声明和初始化:例如,int *p; 声明了一个指向整数的指针 p。
指针的解引用:使用 *p 来访问指针 p 所指向的值。
指针的运算:指针加减整数、指针比较等。
题目:
声明一个指向整数的指针,并将其初始化为指向一个整数变量的地址。
通过指针解引用访问并修改该整数变量的值。
答案解析:
int a = 10;
int *p = &a; // 声明一个指向整数的指针p,并将其初始化为指向变量a的地址
*p = 20; // 通过指针p解引用访问并修改变量a的值为20
第二阶段:指针与数组
目标:
理解指针在数组中的应用,包括数组名作为指针、指针遍历数组等。
内容:
数组名作为指针:在表达式中,数组名会被解释为指向数组首元素的指针。
指针遍历数组:使用指针遍历数组元素,并修改或访问它们的值。
题目:
声明一个整型数组,并使用指针遍历数组并打印每个元素的值。
通过指针修改数组中某个元素的值。
答案解析:
int arr[] = {1, 2, 3, 4, 5};
int *p = arr; // 数组名arr作为指向首元素的指针
for (int i = 0; i < 5; i++) { printf("%d ", *(p + i)); // 使用指针p遍历数组并打印每个元素的值
}
*(p + 2) = 10; // 通过指针p修改数组中第三个元素(下标为2)的值为10
第三阶段:指针与字符串
目标:
理解指针在字符串中的应用,包括字符串的声明、访问和修改。
内容:
字符串的声明和初始化:使用字符数组或字符指针声明字符串。
指针遍历字符串:使用指针遍历字符串中的每个字符。
字符串的修改:通过指针修改字符串中的字符。
题目:
声明一个字符串,并使用指针遍历字符串并打印每个字符。
通过指针修改字符串中的某个字符。
答案解析:
char str[] = "Hello, World!";
char *p = str; // 字符串str的首地址赋给指针p
while (*p != '\0') { // 遍历字符串直到遇到空字符'\0' printf("%c", *p); p++;
}
*(p + 7) = 'C'; // 通过指针p修改字符串中第八个字符(下标为7)为'C'
第四阶段:指针与函数
目标:
理解指针作为函数参数的使用,以及指针在函数返回值中的应用。
内容:
指针作为函数参数:通过指针参数在函数中修改外部变量的值。
指针作为函数返回值:返回一个指向局部变量的指针(注意避免悬垂指针问题)。
题目:
编写一个函数,接收一个整数指针作为参数,并通过该指针修改其指向的整数值。
编写一个函数,返回一个指向静态分配内存的字符串的指针。
答案解析:
#include <stdio.h> void modifyValue(int *p) { *p = 20; // 通过指针p修改其指向的整数值为20
} int main() { int a = 10; modifyValue(&a); // 调用函数并传递变量a的地址 printf("%d\n", a); // 输出修改后的值,应为20 return 0;
}
#include <stdio.h> char* getString() { static char str[] = "Hello, World!"; // 使用静态分配内存,避免悬垂指针问题 return str; // 返回指向静态字符串的指针
} int main() { char *p = getString(); // 调用函数并获取返回的字符串指针 printf("%s\n", p); // 输出字符串,应为"Hello, World!" return 0;
}
第五阶段:复杂指针与多级指针
目标:
理解复杂指针类型(如指向指针的指针、指向数组的指针等)以及它们在多级指针中的应用。
内容:
复杂指针类型的声明和初始化。
多级指针的解引用和运算。
题目:
声明一个指向整数的指针的指针,并通过它修改一个整数的值。
声明一个指向整型数组的指针,并使用指针遍历数组并打印每个元素的值。
答案解析:
#include <stdio.h> void modifyValue(int **pp) { **pp = 30; // 通过二级指针修改其指向的整数值为30
} int main() { int a = 10; int *p = &a; // 一级指针p指向变量a int **pp = &p; // 二级指针pp指向一级指针p modifyValue(pp); // 调用函数并传递二级指针pp printf("%d\n", a); // 输出修改后的值,应为30 return 0;
}
#include <stdio.h> void printArray(int (*arr)[5]) { // 声明一个指向含有5个整数的数组的指针作为函数参数 for (int i = 0; i < 5; i++) { printf("%d ", *(arr + i)); // 使用指针遍历数组并打印每个元素的值 } printf("\n");
} int main() { int arr[5] = {1, 2, 3, 4, 5}; printArray(arr); // 调用函数并传递数组名作为指针 return 0;
}
✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍
相关文章:
大开眼界,原来指针还能这么玩?
文章目录 第一阶段:基础理解目标:内容:题目:答案解析: 第二阶段:指针与数组目标:内容:题目:答案解析: 第三阶段:指针与字符串目标:内容…...
揭秘选择知识产权管理系统的常见误区,避免踩坑
在当今知识经济时代,知识产权管理对于企业的发展至关重要。为了提高管理效率和效果,许多企业纷纷选择采用知识产权管理系统。然而,在选择过程中,存在着一些容易陷入的误区。 误区一:只关注功能,忽视用户体验…...
计算机组成原理之存储器的分类
1、按存储介质分类: 半导体存储器:使用半导体器件作为存储元件,如TTL和MOS存储器。这类存储器体积小、功耗低、存取时间短,但断电后数据会丢失。 磁表面存储器:使用磁性材料涂覆在金属或塑料基体表面作为存储介质&…...
Linux(不同版本系统包含Ubuntu)下安装mongodb详细教程
一、下载MongoDB 在MongoDB官网下载对应的MongoDB版本,可以点击以下链接快速跳转到下载页面: mongodb官网下载地址 注意选择和自己操作系统一致的platform,可以先查看自己的操作系统 查看操作系统详情 命令: uname -a 如图:操…...
如何扫描HTTP代理:步骤与注意事项
HTTP代理是一个复杂的过程,通常用于寻找可用的代理服务器,以便在网络中实现匿名或加速访问。虽然这个过程可以帮助用户找到适合的代理,但也需要注意合法性和道德问题。本文将介绍如何扫描HTTP代理,并提供一些建议和注意事项。 什…...
【分布式微服务云原生】gRPC与Dubbo:分布式服务通信框架的双雄对决
目录 引言gRPC:Google的高性能RPC框架gRPC通信流程图 Dubbo:阿里巴巴的微服务治理框架Dubbo服务治理流程图 表格:gRPC与Dubbo的比较结论呼吁行动Excel表格:gRPC与Dubbo特性总结 摘要 在构建分布式系统时,选择合适的服务…...
Python | Leetcode Python题解之第450题删除二叉搜索树中的节点
题目: 题解: class Solution:def deleteNode(self, root: Optional[TreeNode], key: int) -> Optional[TreeNode]:cur, curParent root, Nonewhile cur and cur.val ! key:curParent curcur cur.left if cur.val > key else cur.rightif cur i…...
[Linux]从零开始的网站搭建教程
一、谁适合本次教程 学习Linux已经有一阵子了,相信大家对LInux都有一定的认识。本次教程会教大家如何在Linux中搭建一个自己的网站并且实现内网访问。这里我们会演示在Windows中和在Linux中如何搭建自己的网站。当然,如果你没有Linux的基础,这…...
牛客——xay loves or与 __builtin_popcount的使用
xay loves or 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行思路 题目要求我们计算有多少个正整数 yy 满足条件 x \text{ OR } y sx OR ys。这里的“OR”是指按位或运算。为了理解这个问题,我们需要考虑按位或运算的性质。 对于任意两个位 a_iai 和 b_…...
Docker学习和部署ry项目
文章目录 停止Docker重启设置开机自启执行docker ps命令,如果不报错,说明安装启动成功2.然后查看数据卷结果3.查看数据卷详情结果4.查看/var/lib/docker/volumes/html/_data目录可以看到与nginx的html目录内容一样,结果如下:5.进入…...
Linux中设置cd命令后直接显示当前目录下的所有文件
Linux中cd命令后默认是不显示该目录下的文件的,略微不方便。换个环境经常遇到需要重新设置的情况,网上已有很多发帖了,这里主要汇总下比较简单且常见的bash与csh下的设置方法。 实现的本质就是将"cd" 与 "ls"组合起来&am…...
【RTCP】报文学习笔记
在学习中,发现每一篇都只能窥探其中一部分内容。因此学习了多个大神的文章,记录如下: 参考希望_睿智 大神的文章:从零开始精通RTSP之深入理解RTCP协议, 大神对于细节表述非常到位。 read_book/RTP_RTCP /RTP_RTCP协议内容–精选自译.md 大神提供了更多更为详细的信息。 ZL…...
Solidity优质例子(二)物流的增删改查智能合约(附truffle测试)
本合约非常适合新手学习,其包含了基本的增删改查功能以及各个方式的不同之处的总结,本套合约我也编写了truffle测试,学习truffle测试的小伙伴也有福了~ 该合约的主要作用是通过区块链技术实现物流追踪系统的透明化、自动化与防篡改特性&#…...
对android binder的一些疑问及解答
1上层做了那么多封装是否是过度了,难度增加就在于上层的一层层的封装。 最底层直接ioctl和binder驱动交互(单纯c语言实现binder交互) 第一层:IPCThreadState.transatct封装了对驱动的请求和接受 第二层封装用IBinder.h里面…...
主流麦克风阵列有哪些?
麦克风阵列在HiFi音频方案中是非常重要的一种方案。它的重要性主要体现在音质提升、环境适应性、噪声处理和空间感创造等方面。以下是它的核心作用: 1. 高精度的声音捕捉 在HiFi音频解决方案中,清晰而高保真的声音捕捉是至关重要的。麦克风阵列可以通过…...
几个快速压缩图片大小的方法!
几个快速压缩图片大小的方法!在当今这个视觉主导的时代,图片已成为我们日常生活中不可或缺的一部分,它们承载着从壮丽风景到办公文档的各类信息,每个人的电子设备中,往往都保存着海量的图片文件,然而&#…...
怎么避免在pod产生-派生炸弹(Fork Bomb)? k8s(kubernetes)
通过修改kubelet的配置,限制每个pod能用的pid数量即可解决此问题。 kubelet 可以通过设置PodPidsLimit参数来限制每个容器内的进程数量。 1.【kubelet节点】 /var/lib/kubelet/config.yaml文件中添加如下的内容 # 500仅仅是举例 podPidsLimit: 5002.【kubelet节点…...
MySQL中的嵌套查询
1. 嵌套查询的定义 嵌套查询指在一个查询语句的某个部分嵌入一个子查询。 嵌套查询的执行过程遵循“先子查询、后外层查询”的逻辑。首先,子查询执行并返回一个结果集,可能是一个值、一行或多行数据。接着,外层查询使用子查询的结果继续对数…...
win10 提示pl2303hxa已停产,请联系供货商解决方案
1. 下载驱动 需要下载老版的驱动,下载地址:https://www.pcsoft.com.cn/soft/211569.html 选择普通下载 或者从CSDN下载: 2. 安装驱动 下载完成后安装下载好的驱动文件,安装后更新pl2303的驱动,如下:…...
浙大数据结构:07-图5 Saving James Bond - Hard Version
这道题也是很有难度,我最开始尝试用Dijkstra来做,发现不是很好处理,用bfs还不错。 机翻: 1、条件准备 n为鳄鱼数量,jump为跳跃距离,headjump为第一次跳跃距离,包括了岛的半径。 isalive标识…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
