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

文章目录
- 第一阶段:基础理解
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第二阶段:指针与数组
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第三阶段:指针与字符串
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第四阶段:指针与函数
- 目标:
- 内容:
- 题目:
- 答案解析:
- 第五阶段:复杂指针与多级指针
- 目标:
- 内容:
- 题目:
- 答案解析:
🌈你好呀!我是 山顶风景独好
🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊
🌸愿您在此停留的每一刻,都沐浴在轻松愉悦的氛围中。
📖这里不仅有丰富的知识和趣味横生的内容等您来探索,更是一个自由交流的平台,期待您留下独特的思考与见解。🌟
🚀让我们一起踏上这段探索与成长的旅程,携手挖掘更多可能,共同进步!💪✨
第一阶段:基础理解
目标:
理解指针的基本概念、声明、初始化和基本操作。
内容:
指针的基本概念:指针是存储内存地址的变量。
指针的声明和初始化:例如,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标识…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
