C语言之写一个修改数组内容的函数

news2024/11/6 8:06:43

问题代码:

在这里插入图片描述
函数ltrim是为了消除buf字符数组中左边空格,
memmove函数介绍
在这里插入图片描述
如果对c语言指针运用非常熟练的人,结合函数功能就会发现这个代码非常的傻逼,你会发现为什么需要返回,buf不用接收返回值,执行这个函数后buf中的内容就已经被改变。

正确的应该这样写:

在这里插入图片描述

收获与感悟:

1、我感觉在代码中,变量名与其所指代的值是key和value的关系,在需要value做运算与条件判断时,编译器或解释器就会进行根据key查找到value进行替换
例如:

int a=10;
char *str="你好世界\0"

这里我们可以看做两个c++中的pair结构,

[
	{
		key:"a",
		value:10
	},
	{
		key:"str",
		value:"字符串首地址”
	}
]

在这个的基础上我们理解指针做函数参数时,

func(str)

我们将key值为str的pair结构传入函数,在需要对value其进行操作时,如:

*str
*(str+1)

编译器或解释器将替换成value

*(0x12345)
*(0x1235+1)

ps:以上纯是自己的胡乱理解。

2、在第一张图中你们可以发现
buf=ltrim(buf),提示 “表达式必须是可修改的左值”,
1、可以浅显的理解为buf是 char *const 类型,明确buf的地址不能修改,但是这只能作为一个”偏方“记忆不能一个数组直接赋值给另一个数组,将一个指针赋给数组标识符,但这个将buf理解为char *const也是错误的。

char buf2[256]={'0'};
buf=buf2;//同样不被允许会触发报警

2、但其实我们需要明确buf指代的是数组,而数组是数组,指针是指针,数组可以被编译器转换为指针。
例如:

void ltrim(char str[]);

上面的函数应该会被预编译器替换为

void ltrim(char *str)

而指针不能转换为数组,所以在第一张图中
就算buf可以被修改也是不允许的这样写的。

以上纯属个人理解,大概都是问题,不要盲目相信

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

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

相关文章

StandardThreadExecutor源码解读与使用(tomcat的线程池实现类)

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java源码解读-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 目录 1.前言 2.线程池基础知识回顾 2.1.线程池的组成 2.2.工作流程 2…

解决pytorch问题:received an invalid combination of arguments - got

问题表现 今天跑模型时报了一个非常奇怪的错误: 意思是“你的lstm层输入的参数是无效的,要求接收参数的类型是(Tensor, tuple of (Tensor, Tensor), list of [Parameter, Parameter, Parameter, Parameter], float, int, float, bool, bool, bool)&am…

Springboot与easypoi(2):合并单元格、二级表头、动态导出

一、纵向合并单元格 使用Excel(needMerge true)标记的属性表示此单元格需要合并。ExcelCollection表示一对多的集合,下面是合并单元格案例。 实体类 企业类: package com.ywz.entity;import cn.afterturn.easypoi.excel.annotation.Excel; import cn.…

vue3 + ts + element-plus 二次封装 el-table

一、实现效果: (1)数据为空时: (2)有数据时:存在数据合并;可自定义表头和列的内容 (3)新增行: (4)删除行: &a…

Python CGI编程-cookie的设置、检索

设置检索 其他: 1. http.cookies和http.cookiejar区别: http.cookies主要用于创建和操作单个cookie对象,适用于需要精细控制单个cookie属性的场景。http.cookiejar则用于管理多个cookie,适用于需要自动处理多个请求和响应中的coo…

k8s 二进制部署安装(三)

目录 部署Calico Calico 工作原理 部署Calico 部署CoreDNS 负载均衡部署 部署dashboard 部署Calico 安装步骤来到 CNI 网络组件 ,在(二)中我们安装了flannel,现在我们要尝试安装另一网络组件Calico calico 不使用隧道或NAT…

idea 创建web工程

模块添加Add Framework Support web Application 改为4.0以上

Linux系列-进程的概念

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 这篇文章,我们主要分析一下进程。 之前,我们讲过了冯诺依曼体系架构, 我们常见的计算机,像笔记本,或者不常见的计算机…

Rust的enum枚举的强大用法

在Rust中,enum(枚举)是一种非常强大的类型,它可以包含多个变体(variants),每个变体可以是不同的类型,包括复杂类型。这使得enum在Rust中不仅用于表示简单的状态或选项集合&#xff0…

【初识Linux】

十点半的飞机快要到了,机场还是那么的拥挤.......................................................................... 文章目录 一、【初识指令】 1、 ls✔ 2、pwd✔ 3、cd✔ 4. touch✔ 5.mkdir✔ 6.rmdir✔ 7、rm ✔ 8.man✔ 9.cp✔ ​10、mv✔ 11、cat✔…

头歌——算法设计与分析(贪心法)

文章目录 第1关:贪心法代码 第2关:最小生成树代码 第3关:Huffman 编码代码 第4关:单源点最短路径代码 第1关:贪心法 相关知识 为了完成本关任务,你需要掌握:贪心法 ;。 贪心法,又称…

面试题:JVM(四)

new对象流程?(龙湖地产) 对象创建方法,对象的内存分配。(360安全) 1. 对象实例化 创建对象的方式有几种? 创建对象的步骤 指针碰撞:以指针为分界线,一边是已连续使用的…

【进阶sql】复杂sql收集及解析【mysql】

开发时会出现,必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串&#xff…

Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)

项目源码&数据源获取 利用Python实现全国岗位招聘信息可视化分析 项目背景: 1.为企业招聘决策提供科学的依据和参考,可以帮助人力资源部门、招聘机构和求职者了解当前的就业形势、行业趋势和人才需求,从而做出更明智的招聘和求职决策。…

Python毕业设计选题:基于django+vue的宠物寄养平台的设计与实现

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 1. 前台系统功能模块 系统首页界面 用户注册界面 用户登录界面 宠物商城界面 宠物店…

Linux云计算 |【第五阶段】CLOUD-DAY10

主要内容: 部署Dashboard、部署Prometheus、部署HPA集群 一、Dashboard介绍 Dashboard是基于网页的Kubernetes用户界面,可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。可以使用Da…

将Notepad++添加到右键菜单【一招实现】

一键添加注册表 复制以下代码保存为 Notepad.reg,将红框内路径修改为自己电脑的“Notepad.exe路径”后,再双击运行即可。 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Notepad" "Icon""D:\\N…

Git下载-连接码云-保姆级教学(连接Gitee失败的解决)

Git介绍 码云连接 一、Git介绍 二、Git的工作机制 下载链接:Git - 下载软件包 三、使用步骤 创建一个wss的文件夹,作为‘工作空间’ 四、连接码云账号 五、连接Gitee失败的解决方法 一、Git介绍 Git是一个免费的、开源的分布式版本控制…

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

DataFlow v202410 版本更新 一站式数据处理平台

DataFlow 是 OpenCSG 推出的一站式数据处理平台,与 CSGHub 无缝集成,形成数据到模型的全生命周期闭环,助力持续优化。平台兼容多种数据格式与来源,支持本地、云端和网络数据接入,并提供高效转换和读取工具,…