当前位置: 首页 > article >正文

通过指针传递给函数

在 C 语言中,除了结构体,还有多种数据类型可以通过指针传递给函数,以下为你详细介绍:

1. 基本数据类型

整数类型

像 intshortlong 等整数类型都能通过指针传递给函数。这种方式常用于函数需要修改调用者中整数变量的值。

收起

c

#include <stdio.h>// 函数接收 int 指针,将其指向的值加 5
void addFive(int *num) {*num += 5;
}int main() {int number = 10;addFive(&number);printf("修改后的数值: %d\n", number);return 0;
}
浮点类型

float 和 double 等浮点类型也可以通过指针传递。例如在函数中修改一个浮点数的值。

收起

c

#include <stdio.h>// 函数接收 double 指针,将其指向的值乘以 2
void multiplyByTwo(double *num) {*num *= 2;
}int main() {double value = 3.14;multiplyByTwo(&value);printf("修改后的数值: %.2f\n", value);return 0;
}
字符类型

char 类型同样能通过指针传递,常用于函数需要修改字符变量的值或者处理字符数组。

收起

c

#include <stdio.h>// 函数接收 char 指针,将其指向的字符转换为大写
void toUpperCase(char *ch) {if (*ch >= 'a' && *ch <= 'z') {*ch -= 32;}
}int main() {char letter = 'b';toUpperCase(&letter);printf("转换后的字符: %c\n", letter);return 0;
}

2. 数组

数组名本质上是数组首元素的地址,所以可以直接将数组名(也就是数组指针)传递给函数。函数可以对数组元素进行读取、修改等操作。

收起

c

#include <stdio.h>// 函数接收 int 数组指针和数组大小,计算数组元素的总和
int sumArray(int *arr, int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i];}return sum;
}int main() {int array[] = {1, 2, 3, 4, 5};int size = sizeof(array) / sizeof(array[0]);int result = sumArray(array, size);printf("数组元素的总和: %d\n", result);return 0;
}

3. 字符串

字符串在 C 语言中是以字符数组的形式存在的,通常用 char * 指针来表示。可以将字符串指针传递给函数进行字符串处理,如查找、替换、复制等操作。

收起

c

#include <stdio.h>
#include <string.h>// 函数接收字符串指针,返回字符串的长度
int getStringLength(char *str) {return strlen(str);
}int main() {char str[] = "Hello, World!";int length = getStringLength(str);printf("字符串的长度: %d\n", length);return 0;
}

4. 枚举类型

枚举类型也可以通过指针传递给函数。这样函数可以修改枚举变量的值或者根据枚举值进行不同的操作。

收起

c

#include <stdio.h>// 定义一个枚举类型
enum Color { RED, GREEN, BLUE };// 函数接收枚举类型指针,将其指向的值修改为下一个枚举值
void nextColor(enum Color *c) {*c = (*c + 1) % 3;
}int main() {enum Color currentColor = RED;nextColor(&currentColor);printf("下一个颜色的枚举值: %d\n", currentColor);return 0;
}

5. 指针类型

可以将指针类型的数据再通过指针传递给函数,也就是传递指针的指针。这种方式常用于函数需要修改调用者中的指针变量本身。

收起

c

#include <stdio.h>
#include <stdlib.h>// 函数接收 int 指针的指针,动态分配内存并初始化指针
void allocateMemory(int **ptr) {*ptr = (int *)malloc(sizeof(int));if (*ptr != NULL) {**ptr = 100;}
}int main() {int *p = NULL;allocateMemory(&p);if (p != NULL) {printf("动态分配内存后的值: %d\n", *p);free(p);}return 0;
}

相关文章:

通过指针传递给函数

在 C 语言中&#xff0c;除了结构体&#xff0c;还有多种数据类型可以通过指针传递给函数&#xff0c;以下为你详细介绍&#xff1a; 1. 基本数据类型 整数类型 像 int、short、long 等整数类型都能通过指针传递给函数。这种方式常用于函数需要修改调用者中整数变量的值。 收…...

Ubuntu20.04之VNC的安装使用与常见问题

Ubuntu20.04之VNC的安装与使用 安装图形桌面选择安装gnome桌面选择安装xface桌面 VNC-Server安装配置开机自启 VNC Clientroot用户无法登入问题临时方案永久方案 安装图形桌面 Ubuntu20.04主流的图形桌面有gnome和xface两种&#xff0c;两种桌面的安装方式我都会写&#xff0c…...

15.5 基于 RetrievalQA 的销售话术增强系统实战:构建智能销售大脑

基于 RetrievalQA 的销售话术增强系统实战:构建智能销售大脑 关键词:RetrievalQA 应用实战、销售知识增强、语义检索优化、上下文感知问答、多源知识融合 1. RetrievalQA 技术原理与销售场景适配 1.1 RetrievalQA 核心工作机制 #mermaid-svg-VL2yIusgl4oprXUr {font-family…...

Vue 刷新当前组件的5种方式

一&#xff0c;使用 location.reload() 这是最直接的方法&#xff0c;它会像用户点击浏览器的刷新按钮一样重载页面。 location.reload();二&#xff0c;使用路由刷新当前页面 如果当前组件是通过路由加载的&#xff0c;可以通过路由的 push 方法重新加载当前路由。 this.$…...

Python 科学计算

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

从同步到异步:Vue 3 的异步更新策略与 `tick` 机制

1. 引言&#xff1a;Vue 3 的异步更新&#xff0c;我们真的了解吗&#xff1f; 在日常开发中&#xff0c;我们都知道 Vue 3 是异步更新的。大多数时候&#xff0c;我们只是简单地使用 ref、reactive、computed 等 API&#xff0c;享受着 Vue 的响应式系统带来的便利。然而&…...

2024中国信通院“集智”蓝皮书合集(附下载)

【目 录】 1. 数字政府一体化建设蓝皮书&#xff08;2024年&#xff09; 2. 数字乡村发展实践蓝皮书&#xff08;2023年&#xff09; 3. 中国工业互联网发展成效评估报告&#xff08;2024年&#xff09; 4. 云计算蓝皮书&#xff08;2024年&#xff09; 5. 具身智能发展报告…...

muduo源码阅读:linux timefd定时器

⭐timerfd timerfd 是Linux一个定时器接口&#xff0c;它基于文件描述符工作&#xff0c;并通过该文件描述符的可读事件进行超时通知。可以方便地与select、poll和epoll等I/O多路复用机制集成&#xff0c;从而在没有处理事件时阻塞程序执行&#xff0c;实现高效的零轮询编程模…...

nvm 1.2.2 报错解决方法 The system cannot find the file specified.

安装了最新版本nvn1.2.2后&#xff0c;安装老版本node时报错&#xff08;安装新版本没问题&#xff09;&#xff0c;报错内容如下&#xff1a; error installing 14.16.0: open C:\Users\admin\AppData\Local\Temp\nvm-npm-430098699\npm-v6.14.11.zip: The system cannot fin…...

学习Python的基本入门知识

学习Python的入门知识可以从以下几个方面开始&#xff1a; ### 1. **Python简介** - **Python** 是一种高级、解释型、通用的编程语言&#xff0c;由Guido van Rossum于1989年发布。 - 它以简洁、易读的语法著称&#xff0c;适合初学者。 - 广泛应用于Web开发、数据分…...

web安全——分析应用程序

文章目录 一、确定用户输入入口点二、确定服务端技术三、解析受攻击面 一、确定用户输入入口点 在检查枚举应用程序功能时生成的HTTP请求的过程中&#xff0c;用户输入入口点包括&#xff1a; URL文件路径 通常&#xff0c;在查询字符?之前的URL部分并不视为用户输入入口&am…...

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…...

平台设备驱动之gpio子系统(写驱动实现在/sys/...目录下用echo命令点灯)

1、 关键函数&#xff08;include/linux 及 driver目录下&#xff09; ​ module_platform_driver(leds_drv); //平台设备驱动入口//获取匹配成功后设备树节点中的 property ​ of_get_named_gpio_flags(node, "led_gpio", 0, &flags); //在/sys/目录下创建文…...

PS渐变工具

渐变工具&#xff1a;&#xff08;颜色条 起点到终点 为 前景色到背景色&#xff09; 渐变shift&#xff1a;垂直、水平、45度 渐变工具–》仿色&#xff1a;让渐变变得细腻。仿色值高&#xff0c;过渡柔和&#xff0c;仿色值低&#xff0c;过渡粗糙 渐变工具–》渐变编辑器&am…...

JavaScript将:;隔开的字符串转换为json格式。使用正则表达式匹配键值对,并构建对象。多用于解析cssText为style Object对象

// 使用正则表达式匹配键值对&#xff0c;并构建对象 let string2Json(s)>{const r {};s.replace(/&#xff1b;/g, ;).replace(/\;/g, \n).replace(/&#xff1a;/g, :).replace(/\n/g, \n)//合并多个换行符.split(\n).forEach(item > {const [k, v] item.split(:);(k…...

2025年追觅科技社招校招入职测评北森题库商业推理测试内容与技巧

在追觅科技的招聘流程中&#xff0c;无论是校园招聘还是社会招聘&#xff0c;应聘者都需要通过北森测评题库的商业推理部分。这部分的测评旨在评估应聘者的商业推理能力&#xff0c;是评估考生综合能力的重要工具。考试时间为40分钟&#xff0c;需要完成28题&#xff0c;题型以…...

AI大模型-提示工程学习笔记19-自我反思

目录 1. 自我反思的核心思想 (1) LLM 的局限性 (2) Reflexion 的解决方案 2. Reflexion 的工作流程 (1) 任务输入 (2) 初始生成 (3) 反思 (Reflection) (4) 调整与改进 (5) 迭代 (6) 结果输出 3. Reflexion 的关键组件 (1) 大语言模型 (LLM) (2) 反思者 (Reflector…...

【工具变量】公司企业数字领导力(2004-2023年)

数据简介&#xff1a;企业数字化领导力是指在数字经济时代&#xff0c;领导者通过战略性地使用数字资产、引领组织变革&#xff0c;使企业在数字化环境中获得持续成功的能力。对于上市公司而言&#xff0c;这种领导力尤为重要&#xff0c;因为它直接关系到企业的战略方向、市场…...

Android 10.0 Settings中系统菜单去掉备份二级菜单

1.前言 在10.0的系统rom定制化开发中,在系统Settings开发过程中,会发现在settings中的系统菜单中需要去掉 备份这个菜单,接下来就需要分析下系统菜单中的备份菜单的相关功能,然后实现去掉备份菜单的功能 2.Settings中系统菜单去掉备份二级菜单的核心类 packages/apps/Se…...

C++ | 设计模式 | 代理模式

代理模式&#xff08;Proxy Pattern&#xff09; 代理模式是一种结构型设计模式 &#xff0c;它为某个对象提供一个代理&#xff0c;以控制对该对象的访问。代理模式可以在不改变原始对象的情况下&#xff0c;通过引入代理对象来扩展功能或控制对原始对象的访问。 核心思想 代…...

【Vue工作原理】VueCli4 模板文件template不存在会生产一个默认文件原理

Vue CLI 4 的 HtmlWebpackPlugin 在模板文件缺失时&#xff0c;‌不会中断构建流程‌&#xff0c;而是自动生成一个‌极简 HTML 结构‌&#xff08;DeepSeek回答&#xff09; ‌&#x1f4d8; 官方资料来源解析&#xff08;基于 2025 年存档数据&#xff09;‌ 当前时间&#…...

数据开发的简历及面试

简历 个人信息: 邮箱别写QQ邮箱, 写126邮箱/189邮箱等 学历>>本科及以上写,大专及以下不写 专业>>非计算机专业不写 政治面貌>>党员写, 群众不用写 掌握的技能: 精通 > 熟悉 > 了解 专业工具: 大数据相关的 公司: 如果没有可以写的>>金融服…...

如何在docker上部署前端nginx服务(VUE)

目录结构 clean.sh docker stop rszWeb; docker rm rszWeb; start.sh docker run -d \ --name rszWeb \ -p 7084:80 \ -m 500m \ --privileged=true \ --restart=always \ -v /home/rsz/ui/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/rsz/ui/logs:/meta/logs \ -v /…...

模型和数据集的平台之在Hugging Face上进行模型下载、上传以及创建专属Space

模型下载 步骤&#xff1a; 注册Hugging Face平台 https://huggingface.co/ 新建一个hf_download_josn.py 文件 touch hf_download_josn.py 编写hf_download_josn.py文件 import os from huggingface_hub import hf_hub_download# 指定模型标识符 repo_id "inter…...

[Web 信息收集] Web 信息收集 — 手动收集 IP 信息

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01&#xff1a;通过 DNS 服务获取域名对应 IP DNS 即域名系统&#xff0c;用于将域名与 IP 地址相互映射&#xff0c;方便用户访问互联网。对于域名到 IP 的转换过程则可以参考下面这篇…...

排序算法(3):

这是我们的最后一篇排序算法了&#xff0c;也是我们的初阶数据结构的最后一篇了。 我们来看&#xff0c;我们之前已经讲完了插入排序&#xff0c;选择排序&#xff0c;交换排序&#xff0c;我们还剩下最后一个归并排序&#xff0c;我们今天就讲解归并排序&#xff0c;另外我们还…...

TypeScript - 泛型

泛型允许在定义函数、类或接口时&#xff0c;使用类型参数来表示未指定的类型&#xff0c;这些参数在具体使用时&#xff0c;才被指定具体的类型&#xff0c;泛型能让同一段代码适用于多种类型&#xff0c;同时仍然保持类型的安全性。 举例&#xff1a;如下代码中 <T> 就…...

Python基于Django和Vue的校园互助平台(附源码、文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

打包rocketmq-dashboard报错问题记录

在进入到\rocketmq-dashboard-2.0.0\rocketmq-dashboard-rocketmq-dashboard-2.0.0目录下&#xff0c;执行mvn clean package -Dmaven.test.skiptrue打包&#xff0c;报错&#xff1a; java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does…...

Redis 高可用性:如何让你的缓存一直在线,稳定运行?

&#x1f3af; 引言&#xff1a;Redis的高可用性为啥这么重要&#xff1f; 在现代高可用系统中&#xff0c;Redis 是一款不可或缺的分布式缓存与数据库系统。无论是提升访问速度&#xff0c;还是实现数据的高效持久化&#xff0c;Redis 都能轻松搞定。可是&#xff0c;当你把 …...