C进阶-字符串与内存函数介绍(另加2道典型面试题)

news2025/1/3 15:20:13

满意的话,记得一键三连哦!

我们先看2道面试题

第一道:

我们画图理解:

 pa++先使用再++,pa开始指向a【0】++之后pa向下移动一位,再解引用,指向a【1】a【1】又指向at的首元素a的地址,开始打印字符串at

第二道:

我们画个图:(初始的指向图)

第一个printf:(配着图哦!)(注意上一个printf的图是下一个printf的初始图,因为cpp指向也发生了改变)

 cpp加加,首先自己的指向向下移动一位,指向cp【1】,解引用得到cp【1】的位置,再解引用得到c【2】,打印POINT

第二个printf:

 cpp先加加后使用,让cpp指向了cp【2】,解引用拿到cp【2】,cp【2】先自减再使用,解引用得到c【0】,     c【0】+3      ,         c【0】从指向E(首元素)向后移动3位,指向了后面那个E,打印EP

注意上个printf的图是下一个printf的初始图,同时注意cpp【-2】这种,cpp在使用完后会复原

第三个printf:

 cpp【-2】,相当于cpp-2,指向cp【0】,自解引用得到cp【0】,cp【0】再解引用,拿到c【3】,c【3】开始指向F(首元素),+3向后移动3位,指向了S,打印ST

第四个printf:

cpp[【-1】【-1】,先向下移动一位自解引用得到cp【1】,再让cp【1】向下移动一位自解引用拿到c【1】,c【1】开始指向N(首元素),再向后移动一位指向E,打印EW

C— 字符串与内存函数的介绍(注意头文件哦!)

我们先看几个常用的库函数(注意目标空间足够哦!这是常犯错的地方

strlen计算长度

strlen是求字符串长度,直到遇到 \0 才会停下来,计算的是 \0 之前的字符个数,返回值是size_t(无符号整数)

(1)直接使用(注意:只有字符串才有 \0 ,strlen只会遇到 \0 才会停下)

(2)指针实现strlen

 

(3)递归实现strlen

 

strcpy拷贝字符串 

就是给一个目标空间,把一个字符串拷贝到这个空间

(1)直接使用

 注意:它有一个覆盖的效果

(2)实现strcpy

 

strcat追加字符串

找到目标的末尾\0,在\0之后追加字符串(因此追加之后,原来目标末尾的\0会被丢掉,因为要打印新的字符串,不然可能断节)

(1)直接实现

(2)实现strcat

 

strcmp比较字符串大小

比较2个字符串大小,从第一个开始,一个个比较(比较ASCII值),比较的结果返回一个“>0”,"<0","=0”的数字

(1)直接使用strcmp

(2)实现strcmp(简单的方法就是多写几个判断就行了)

 

strnlen与strncpy与strncat与strncmp

这几个就是上面的升级版,升级地方就在可以控制个数,我举个例子大家就明白了,举一反三的道理

同样,如果是strncat,就是控制追加字符个数

如果是strncmp,就是控制比较个数

用法一样,这个很好理解,都是在前两个参数后面加一个数字

我们来看看strncpy(拷贝字符串)如果数字超标了怎么办:

所以:如果是strncpy,那么数字过大,就只打印拷贝的全部内容

 

我们再看看strncmp:(比较大小)

结果会直接报错 

下面看strncat(追加字符串):

 结果是编译器不报错,直接输出追加完的结果

strstr查找字符或者字符串


跟名字一样,就是查找功能,然后从查找的符合条件的地方一起打印,直到\0停下

(1)直接使用:

今天就先到这里啊!明天我再补充完整,感谢支持!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PH47代码框架 24241231 重要更新

仪式感一下&#xff1a;2024年最后一天&#xff0c;发布 PH47 代码框架的一次重要更新。当然这并不是有意的&#xff0c;而是直到现在才把更新的所有工作全部做完&#xff08;希望确实如此&#xff09;。 本次更新要点&#xff1a; 1、加入多IMU支持。本次更新正式加入对 MPU65…

idea报错:There is not enough memory to perform the requested operation.

文章目录 一、问题描述二、先解决三、后原因&#xff08;了解&#xff09; 一、问题描述 就是在使用 IDEA 写代码时&#xff0c;IDEA 可能会弹一个窗&#xff0c;大概提示你目前使用的 IDEA 内存不足&#xff0c;其实就是提醒你 JVM 的内存不够了&#xff0c;需要重新分配。弹…

Python用K-Means均值聚类、LRFMC模型对航空公司客户数据价值可视化分析指标应用|数据分享...

全文链接&#xff1a;https://tecdat.cn/?p38708 分析师&#xff1a;Yuling Fang 信息时代的来临使得企业营销焦点从产品中心转向客户中心&#xff0c;客户关系管理成为企业的核心问题&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 客户关系管理的关键是客…

Linux umami网站统计工具自定义API开发

Linux umami网站统计工具自定义API开发 一、src/queries/analytics/下添加调用sql查询文件&#xff1a;二、src/queries/index.js文件中增加导出模块内容&#xff1a;三、src/pages/api/下根据目录添加接口方法文件&#xff1a;四、构建项目&#xff0c;启动。1、到umami目录&a…

基于SpringBoot的实验室信息管理系统【源码+文档+部署讲解】

系统介绍 视频演示 基于SpringBootVue实现的实验室信息管理系统采用前后端分离的架构方式&#xff0c;系统分为管理员、老师、用户三种角色&#xff0c;实现了用户管理、设备管理、实验室查询、公告、课程、实验室耗材管理、我的等功能 技术选型 开发工具&#xff1a;idea2…

【openGauss】正则表达式次数符号“{}“在ORACLE和openGauss中的差异

一、前言 正则作为一种常用的字符串处理方式&#xff0c;在各种开发语言&#xff0c;甚至数据库中&#xff0c;都有自带的正则函数。但是正则函数有很多标准&#xff0c;不同标准对正则表达式的解析方式不一样&#xff0c;本次在迁移一个ORACLE数据库到openGauss时发现了一个关…

SSM-Spring-IOC/DI对应的配置开发

目录 一、IOC 控制反转 1.什么是控制反转呢 2. Spring和IOC之间的关系是什么呢? 3.IOC容器的作用以及内部存放的是什么? 4.当IOC容器中创建好service和dao对象后&#xff0c;程序能正确执行么? 5.Spring 容器管理什么内容&#xff1f; 6.如何将需要管理的对象交给 …

docker中使用nginx

宿主机和docker中nginx做映射 宿主机中nginx 映射目录 /root/myDockerData/devnginx 在容器中相关位置分别是&#xff1a; 配置文件位置&#xff1a;/etc/nginx/ 日志位置&#xff1a;/var/log/nginx/ 项目位置&#xff1a;/usr/share/nginx/html 如下配置启动命令行&#x…

Rocky Linux下安装meld

背景介绍&#xff1a; meld是一款Linux系统下的用于 文件夹和文件的比对软件&#xff0c;非常常用&#xff1b; 故障现象&#xff1a; 输入安装命令后&#xff0c;sudo yum install meld&#xff0c;报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…

Python中PDF转Word的技术

Python PDF转Word技术概述 在日常办公和数据处理中&#xff0c;经常需要将PDF文档转换为Word文档&#xff0c;以便进行编辑、修改或格式调整。Python作为一种强大的编程语言&#xff0c;提供了多种库和工具来实现这一功能。以下是对Python中PDF转Word技术的详细介绍。 一、技…

混合并行训练框架性能对比

混合并行训练框架性能对比 1. 框架类型 DeepSpeed、Megatron - LM、Colossal - AI、SageMaker、Merak、FasterMoE、Tutel、Whale、Alpa、DAPPLE、Mesh - TensorFlow 2. 可用并行性(Available parallelisms) DNN framework(深度神经网络框架)DP(数据并行,Data Parallelis…

python24-常用的第三方库02:openpyxl模块、pdfplumber模块

一、openpyxl模块 openpyxl 是一个用于读取和写入 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。 它允许你以编程方式操作 Excel 文件&#xff0c;包括创建新的工作簿、修改现有的工作簿、添加或删除工作表、读写单元格数据等。 1-1、安装openpyxl模块 验证&#xff1a…

npm ERR! ECONNRESET 解决方法

问题&#xff1a;npm 命令遇到的错误是 ECONNRESET&#xff0c;这通常与网络连接问题相关。设置代理解决问题。 一、查看当前代理设置 npm config get proxy npm config get https-proxy二、设置代理 npm config set proxy http://your-proxy-address:port npm config set h…

单元测试3.0+ @RunWith(JMockit.class)+mock+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上面, 一般用实现类 Injectable 在测试案例中声明…

网络渗透测试实验二:网络嗅探与身份认证

1.实验目的和要求 1、通过使用Wireshark软件掌握Sniffer&#xff08;嗅探器&#xff09;工具的使用方法&#xff0c;实现捕捉HTTP等协议的数据包&#xff0c;以理解TCP/IP协议中多种协议的数据结构、通过实验了解HTTP等协议明文传输的特性。 2、研究交换环境下的网络嗅探实现…

mqtt连接onenet云平台

密码 version2018-10-31&resproducts%2FlzNd7drwE2%2Fdevices%2Flocation_1&et1756617761&methodmd5&sign52jsIUhK7i2zXjlEtkwDhQ%3D%3D 设备名称&#xff1a;temperatureAndHumidity 设备密钥&#xff1a;bE5OSHBlTHU3TDNSUUVoTmY0WWZqbThDVzNjOUJ3Y1Y 产品i…

Neo4j GDS 2.0 安装与配置

Neo4j GDS 2.0 安装与配置 GDS插件安装&#xff1a;Neo4j官方文档 1. GDS简介 Neo4j Graph Data Science (GDS) 库作为 Neo4j Graph Database 的插件提供。该插件需要安装到数据库中并在 Neo4j 配置中列入白名单。有两种主要方法可以实现这一点&#xff0c;我们将在本章中详…

艾体宝方案丨全面提升API安全:AccuKnox 接口漏洞预防与修复

一、API 安全&#xff1a;现代企业的必修课 在现代技术生态中&#xff0c;应用程序编程接口&#xff08;API&#xff09;扮演着不可或缺的角色。从数据共享到跨平台集成&#xff0c;API 成为连接企业系统与外部服务的桥梁。然而&#xff0c;伴随云计算的普及与微服务架构的流行…

使用JMeter对Linux生产服务器进行压力测试

安装 JMeter wget https://downloads.apache.org/jmeter/binaries/apache-jmeter-5.4.1.tgz tar -xzf apache-jmeter-5.4.1.tgz cd apache-jmeter-5.4.1创建 JMeter 脚本 设置中文 选择Options—>Choose Language—>选择其他语言&#xff08;例如&#xff1a;Chinese&am…

位置编码--RPE

相对位置编码 (Relative Position Encoding, RPE) 1. 相对位置编码 相对位置编码是 Transformer 中的一种改进位置编码方式&#xff0c;它的主要目的是通过直接建模序列中元素之间的相对位置&#xff0c;而不是绝对位置&#xff0c;从而更好地捕捉序列元素之间的依赖关系&#…