c语言指针入门(二)
今天学习了指针的两个常用场景,在此记录,以便后续查看。
场景1:传数组
在c语言中,我们在定义函数的时候是没有办法直接传一个数组进去的,为了解决这个问题,我们一般将数组的名称当作一个指针参数传入到函数的参数列表中,因为数组的名称类似于一个常量指针,将其传入函数后,再传入数组的长度,就可以在函数内部访问这个数组。原因在于,指针记录的是一个地址,我们将这个地址作为一个参数传入方法内部时,相当于这个方法也访问到了这个地址,进而可以访问到这个数组。但这里有一个问题,我们一般在调用子函数时,传入的参数一般都是重新找一块地址将参数内容复制,子函数使用的是复制的部分,这样子函数就不会改变外部参数的值。但现在用指针的话,就不会进行复制了,而是直接访问同一地址,这样就可能对原数组进行更改。解决方法就是在传参时,给传入的指针前加上const,表示只读。这样原数组就不会被改变,如果子函数中尝试改变原数组,系统就会报错。举例如下:
#include <stdio.h>int CAL(int *p,int count) {int total = p[0];for (int i = 1; i < count; i++){total += p[i];}return total;}int main() {int a[] = {1,2,3,4,5};int b=CAL(a,5);printf("%d\n",b);return 0;}
结果:15
场景2:传回多个参数
我们在声明函数时,c语言一般只能返回一个值,像其他语言,比如C#中,我们可以使用out参数来返回多个值,但c语言没有这种参数,我们一般用指针来进行多个参数的返回。就像上面说的,指针会指向一个地址,我们在传入参数时,我们假设想返回两个值,那我们就给函数传入两个指针,我们在内部改变这两个指针地址所存的数据后,我们在函数外部访问这个两个地址即可,即可完成多个参数的返回。举例如下:
#include <stdio.h>void TwoTotal(int *p,int count1,int *q,int count2,int *pp,int*qq) {*pp = p[0];for (int i = 1; i < count1; i++){*pp += p[i];}*qq = p[0];for (int i = 1; i < count2; i++){*qq += q[i];}}int main() {int p[] = { 1,2,3,4,5 };int q[] = {1,2,3,4,5,6,7};int total1 = 0;int total2 = 0;TwoTotal(p,5,q,7,&total1,&total2);printf("%d\n", total1);printf("%d\n", total2);return 0;}
结果:
15
28
相关文章:
c语言指针入门(二)
今天学习了指针的两个常用场景,在此记录,以便后续查看。 场景1:传数组 在c语言中,我们在定义函数的时候是没有办法直接传一个数组进去的,为了解决这个问题,我们一般将数组的名称当作一个指针参数传入到函数…...
一篇讲透排序算法之插入排序and选择排序
1.插入排序 1.1算法思想 先将数组的第一个元素当作有序,让其后一个元素与其比较,如果比第一个元素小则互换位置,之后再将前两个元素当作有序的,让第三个元素与前两个元素倒着依次进行比较,如果第三个元素比第二个元素…...
CompletableFuture的主要用途是什么?
CompletableFuture 的主要用途是为复杂的异步编程模型提供一种更简单,更具可读性的方式。它主要用于以下几个方面: 非阻塞计算:CompletableFuture 为处理高延迟的计算任务提供了非阻塞的解决方案。你可以启动一个计算任务,而不需要…...
QtCreator,动态曲线实例
样式图: .ui 在sloem1.ui文件中,拖入一个label控件, 头文件.h #include "QtGui/QPainter.h" #include "QtCore/QTimer.h"protected:bool eventFilter(QObject *obj,QEvent *event);void labelPaint();public slots: /…...
Model-Based Pose Estimation for Rigid Objects(基于SIFT)
6D目标检测工程落地需求的小算力算法,本文具有借鉴意义,但对于特征点少的目标不太好用。 摘要 在多个实际应用中,经常会遇到确定图像中出现的物体姿态的问题。处理这一挑战的最有效策略是按照基于模型的范式进行,这涉及构建物体…...
STM32自己从零开始实操02:输入部分原理图
一、触摸按键 1.1指路 项目需求: 4个触摸按键,主控芯片 TTP224N-BSBN(嘉立创,封装 TSSOP-16),接入到 STM32 的 PE0,PE1,PE2,PE3。 1.2走路 1.2.1数据手册重要信息提…...
JavaScript异步编程——03-Ajax传输json和XML的技术文档
JavaScript异步编程——03-Ajax传输json和XML的技术文档 目录 JavaScript异步编程——03-Ajax传输json和XML的技术文档 一、引言 二、Ajax简介 三、Ajax传输JSON数据 四、Ajax传输XML数据 五、总结 一、引言 在现代Web开发中,Ajax技术已经成为实现前后端数据交…...
移动端常用meta
在移动端开发中,<meta> 标签用于提供关于HTML文档的元数据,这些元数据不会显示在页面上,但可以被浏览器解析,用于控制页面的行为和外观。以下是一些在移动端开发中常用的 标签: 1. 视口设置 这是移动端开发中最…...
C++_C++11的学习
1. 统一的列表初始化 1.1{}初始化 在C98 中,标准就已经允许使用花括号 {} 对数组或者结构体元素进行统一的列表初始值设定。而到了C11,标准扩大了用大括号括起的列表 ( 初始化列表 )的使用范围,使其能适用于所有的内…...
RAC11G参数修改错误导致启库失败处理
问题描述 部署完一套3节点的11g RAC后,进行了内存的参数优化,优化时忘记了先备份参数文件,忘记了计算内存参数眼盲的复制粘贴执行内存优化sql导致优化后重启实例启动失败。艾,由于粗心自己给自己挖了个坑。 切记更改参数步骤&am…...
UE4打包Win64项目命令行
仅用于个人记录,写的粗糙,勿喷 BuildProject.bat 具体命名参数请参照UE引擎RunUAT源码(Programs\AutomationTool下Program.cs) 参数1:引擎安装路径 参数2:uproject路径 参数3:输出路径 参数…...
c语言bug汇总中篇5
40. 不关注代码风格一致性 代码风格一致性有助于提高代码的可读性和可维护性。如果团队成员使用不同的代码风格,会导致代码看起来杂乱无章,增加阅读和理解的成本。 为了保持代码风格的一致性,程序员应该: - 遵循团队或项目约定的…...
【linux】进程(一)
1. 冯诺依曼体系结构 计算机基本都遵循着冯诺依曼体系 我们使用的计算器是由一个个硬件构成的: 中央控制器(CPU) : 运算器 控制器 等输入设备 : 键盘,鼠标,网卡 等输出设备 : 显示器,网卡 等…...
手把手教你用Python轻松玩转SQL注入
一、浅谈SQL注入 SQL注入其实就是把SQL命令插入到WEB表单中提交或者输入一些页面请求的查询字符串,比如我们输网址,就是相当于这种操作,只不过我们不是在测试SQL注入漏洞,而仅仅只是为了输入后看到相应网页上的内容而已。一般方法…...
redis的几种部署模式及注意事项
Redis 可以以多种部署模式来满足不同的需求,其中一些常见的部署模式包括:单节点部署、主从复制部署、哨兵模式部署和集群部署。这些部署模式各有特点,适用于不同的场景和需求: 概念 单节点部署: 特点:单…...
使用Python生成一束玫瑰花
520到了,没时间买花?我们来生成一个电子的。 Python不仅是一种强大的编程语言,用于开发应用程序和分析数据,它也可以用来创造美丽的艺术作品。在这篇博客中,我们将探索如何使用Python生成一束玫瑰花的图像。 准备工作…...
紫光同创PGL22G开发板|盘古22K开发板,国产FPGA开发板,接口丰富
盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板,全面实现国产化方案,板载资源丰富,高容量、高带宽,外围接口丰富,不仅适用于高校教学,还可以用于实验项目、项目开发,一板…...
大模型的实践应用24-LLaMA-Factory微调通义千问qwen1.5-1.8B模型的实例
大家好,我是微学AI,今天给大家介绍一下大模型的实践应用24-LLaMA-Factory微调通义千问qwen1.5-1.8B模型的实例, LLaMA-Factory是一个专门用于大语言模型微调的框架,它支持多种微调方法,如LoRA、QLoRA等,并提供了丰富的数据集和预训练模型,便于用户进行模型微调。通义千问…...
力扣爆刷第142天之二叉树五连刷(构造树、搜索树)
力扣爆刷第142天之二叉树五连刷(构造树、搜索树) 文章目录 力扣爆刷第142天之二叉树五连刷(构造树、搜索树)一、106. 从中序与后序遍历序列构造二叉树二、654. 最大二叉树三、617. 合并二叉树四、700. 二叉搜索树中的搜索五、98. …...
0407放大电路的频率响应
放大电路的频率响应 单时间常数RC电路的频率响应中频响应高频响应低频响应全频域响应 放大电路频率响应概述1. 直接耦合放大电路频域响应阻容耦合放大电路频域响应 4.7.1 单时间常数RC电路的频率响应 4.7.2 放大电路频率响应概述 4.7.3 单级共射极放大电路的频率响应 4.7.4 单级…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
