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

c语言-函数-009

2.函数传参:
2.1赋值传递(复制传递)函数体内部想要使用函数体外部变量值的时候使用复制传递2.2全局变量传递
#include <stdio.h>int Num1 = 100;
int Num2 = 200;
int Ret = 0;void Add(void)
{Ret = Num1 + Num2;return;
}int main(void)
{Add();printf("Ret = %d\n", Ret);return 0;
}
2.3地址传递函数体内部想要修改函数体外部变量值的时候使用地址传递

示例1:

#include <stdio.h>int SetNum(int *pTmp)
{*pTmp = 100;return 0;
}int main(void)
{int Num = 0;SetNum(&Num);printf("Num = %d\n", Num);return 0;
}

示例2:

#include <stdio.h>int Swap(int *px, int *py)
{int tmp = 0;tmp = *px;*px = *py;*py = tmp;return 0;
}int main(void)
{int Num1 = 100;int Num2 = 200;Swap(&Num1, &Num2);printf("Num1 = %d, Num2 = %d\n", Num1, Num2);return 0;
}
    函数体内想修改函数体外指针变量值的时候传指针变量的地址即二级指针
#include <stdio.h>int SetPoint(char **pptmp)
{*pptmp = "hello world";return 0;
}int main(void)
{char *p = NULL;SetPoint(&p);printf("p = %s\n", p);return 0;
}
2.4整形数组传递int a[5] = {1, 2, 3, 4, 5};int Fun(int parray[5]);int Fun(int parray[], int len);int Fun(int *parray, int len);

示例1:

#include <stdio.h>#if 0
int PrintArray1(int parray[5])
{int i = 0;printf("sizeof:%ld\n", sizeof(parray));for (i = 0; i < 5; i++){printf("%d ", parray[i]);}printf("\n");return 0;
}int PrintArray2(int parray[], int len)
{int i = 0;printf("sizeof:%ld\n", sizeof(parray));for (i = 0; i < len; i++){printf("%d ", parray[i]);}printf("\n");return 0;
}
#endifint PrintArray3(int *parray, int len)
{int i = 0;for (i = 0; i < len; i++){printf("%d ", parray[i]);}printf("\n");return 0;
}int main(void)
{int a[5] = {1, 2, 3, 4, 5};//	PrintArray1(a);
//	PrintArray2(a, 5);PrintArray3(a, 5);return 0;
}

示例2:

#include <stdio.h>int Fun(int (*p)[3], int len)
{int i = 0;int j = 0;for (j = 0; j < len; j++){for (i = 0; i < 3; i++){printf("%d ", p[j][i]);}printf("\n");}return 0;
}int main(void)
{int a[2][3] = {1, 2, 3, 4, 5, 6};Fun(a, 2);return 0;
}
2.5字符型数组和字符串的传递char str[32] = {"hello world"};int Fun(char *pstr);2.6二维数组传递
(1)整形二维数组传递int a[2][3] = {1, 2, 3, 4, 5, 6};int Fun(int (*parray)[3], int len);
(2)字符型二维数组传递char str[5][32] = {"hello", "world", "how", "are", "you"}; int Fun(char (*pstr)[32], int len);
#include <stdio.h>int Fun(char (*pstr)[32], int len)
{int i = 0;for (i = 0; i < len; i++){printf("pstr[%d] = %s\n", i, pstr[i]);}return 0;
}int FunPointArray(char **parray, int len)
{int i = 0;for (i = 0; i < len; i++){printf("parray[%d] = %s\n", i, parray[i]);}return 0;
}int main(void)
{char str[5][32] = {"hello", "world", "how", "are", "you"};char *a[5] = {str[0], str[1], str[2], str[3], str[4]};int i = 0;Fun(str, 5);FunPointArray(a, 5);return 0;
}
2.7指针数组传递char *pstr[5] = {NULL};int Fun(char **ppstr, int len);

2.8结构体传递
(1)结构体变量传递
struct student s;

int Fun(struct student tmp);

#include <stdio.h>struct student
{char name[32];char sex;char age;int score;
};struct student GetStuInfo(void)
{struct student stu;gets(stu.name);scanf("%c", &stu.sex);scanf("%d", &stu.age);scanf("%d", &stu.score);return stu;
}void PutStuInfo(struct student tmp)
{printf("姓名:%s\n", tmp.name);printf("性别:%c\n", tmp.sex);printf("年龄:%d\n", tmp.age);printf("成绩:%d\n", tmp.score);return;
}int main(void)
{struct student s;s=GetStuInfoByPoint(&s);PutStuInfo(s);return 0;
}

(2)结构体指针传递
struct student s;

int Fun(struct student *ps);

#include <stdio.h>struct student
{char name[32];char sex;char age;int score;
};int GetStuInfoByPoint(struct student *ps)
{gets(ps->name);scanf("%c", &ps->sex);scanf("%d", &ps->age);scanf("%d", &ps->score);return 0;
}int PutStuInfoByPoint(struct student *ps)
{printf("姓名:%s\n", ps->name);printf("性别:%c\n", ps->sex);printf("年龄:%d\n", ps->age);printf("成绩:%d\n", ps->score);return 0;
}int main(void)
{struct student s;GetStuInfoByPoint(&s);PutStuInfoByPoint(&s);return 0;
}

(3)结构体数组传递
struct student stu[3];

int Fun(struct student *pstu, int len);

#include <stdio.h>struct student 
{char name[32];char sex;int age;int score;
};int PrintStuInfo(struct student *pstu, int len)
{int i = 0;for (i = 0; i < len; i++){printf("姓名:%s\n", pstu[i].name);printf("性别:%c\n", pstu[i].sex);printf("年龄:%d\n", pstu[i].age);printf("成绩:%d\n", pstu[i].score);}return 0;
}int main(void)
{struct student stu[3] = {{"zhangsan", 'm', 19, 100},{"lisi", 'f', 18, 90},{"wanger", 'm', 17, 60},};PrintStuInfo(stu, 3);return 0;
}

相关文章:

c语言-函数-009

2.函数传参: 2.1赋值传递&#xff08;复制传递&#xff09;函数体内部想要使用函数体外部变量值的时候使用复制传递2.2全局变量传递#include <stdio.h>int Num1 100; int Num2 200; int Ret 0;void Add(void) {Ret Num1 Num2;return; }int main(void) {Add();printf…...

Spring事件发布监听器ApplicationListener原理- 观察者模式

据说监听器模式也是mq实现的原理, 不过mq我还没来得及深入学习, 先用spring来理解一下吧 Spring事件发布监听器ApplicationListener原理- 观察者模式 什么是观察者模式一个Demo深入认识一下观察者模式Spring中的事件发布监听ps 什么是观察者模式 大家都听过一个故事叫做烽火戏…...

系统学习Python——装饰器:直接管理函数和类

分类目录&#xff1a;《系统学习Python》总目录 在《系统学习Python——装饰器》系列文章中&#xff0c;我们的大多数示例都设计来拦截函数和实例创建调用。这对于装饰器来说很典型&#xff0c;但是它们并不限于这一角色。因为装饰器通过装饰器代码来运行新的函数和类&#xff…...

Leetcode 3049. Earliest Second to Mark Indices II

Leetcode 3049. Earliest Second to Mark Indices II 1. 解题思路2. 代码实现3. 算法优化 题目链接&#xff1a;3049. Earliest Second to Mark Indices II 1. 解题思路 这道题我看貌似难度报表&#xff0c;比赛的时候貌似只有36个人搞定了这道题目&#xff0c;然后最快的人…...

CrossOver 24下载-CrossOver 24 for Mac下载 v24.0.0中文永久版

CrossOver 24是一款可以让mac用户能够自由运行和游戏windows游戏软件的虚拟机类应用&#xff0c;虽然能够虚拟windows但是却并不是一款虚拟机&#xff0c;也不需要重启系统或者启动虚拟机&#xff0c;类似于一种能够让mac系统直接运行windows软件的插件。它以其出色的跨平台兼容…...

算法设计.

文章目录 1. 贪心算法&#xff1a;只看当前1.1 零钱兑换问题&#xff1a;力扣322 2. 活动选择问题3. 动态规划3.1 不同路径&#xff1a;3.2 0-1背包问题3.3 完全背包问题3.4 零钱兑换-动态规划 4. 最长公共字串--动态规划5. 最长公共子序列 1. 贪心算法&#xff1a;只看当前 1…...

20240304金融读报:票据贴现数据挖掘与新质生产力信贷创新

1、【他山之石】票据贴现数据挖掘&#xff1a;邮储三步走&#xff08;为存量科技企业提供贴现、拉国家科技名单拓客、通过贴现激活睡眠对公户、提供不止贴现业务&#xff09; 2、【宏观经济】函数推算的潜在增长率2025之前为4%&#xff0c;2025-2035间为3%。破局在于通过改革、…...

05. Nginx入门-Nginx访问控制

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径&#xff1a;/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…...

S2---FPGA-A7板级原理图硬件实战

视频链接 FPGA-A7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-A7板级原理图硬件实战 基于XC7A100TFGG484的FPGA硬件设计流程图 A7核心板&#xff0c;是基于XILINX公司的ARTIX-7系列100T的XC7A100T,2FGG484I这款芯片开发的高性能核心板&#xff0c;具有高速&#xff0c;高带宽&a…...

RK DVP NVP6158配置 学习

NVP6158简介 NVP6158C是一款4通道通用RX&#xff0c;提供高质量图像的芯片。它接受来自摄像机和其他视频信号的独立4通道通用输入来源。它将4通道通用1M至8M 7.5P视频格式数字化并解码为代表8位ITU-R BT.656/1120 4:2:2格式的数字分量视频&#xff0c;并将单独的BT.601格式与27…...

C++基础2:C++基本数据类型和控制结构

此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏&#xff0c;参考书籍&#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 2.C基本数据类型和控制结构 2.1 C基本数据类型 程序是由算法…...

HFSS仿真双频微带天线学习笔记

HFSS仿真双频微带天线 文章目录 HFSS仿真双频微带天线1、 求解器设置2、 建模3、 激励方式设置4、 边界条件设置5、 扫频设置6、 设计检查&#xff0c;仿真分析7、 数据后处理 这里重点关注HFSS软件的操作&#xff0c;关于理论知识将在后面的文章中进行更新。 设计要求&#xf…...

【十一】【SQL】外连接(左外连接,右外连接)

数据库中的外连接&#xff08;Outer Join&#xff09;用于连接两个表&#xff0c;并包括两个表中的匹配行以及左表&#xff08;LEFT JOIN&#xff09;或右表&#xff08;RIGHT JOIN&#xff09;中未匹配的行。外连接分为两种主要类型&#xff1a; 左外连接&#xff08;LEFT OU…...

敏捷开发模型:一种灵活、协作和持续的软件开发方法

敏捷开发模型&#xff1a;一种灵活、协作和持续的软件开发方法 引言 在软件开发领域&#xff0c;随着市场需求的不断变化和技术的迅速发展&#xff0c;传统的瀑布模型逐渐暴露出其局限性。为了应对这些挑战&#xff0c;敏捷开发模型应运而生。敏捷开发模型强调灵活、协作和持…...

软件设计师10--计算机组成与体系结构章节回顾

软件设计师10--计算机组成与体系结构章节回顾 章节重要内容考情分析 章节重要内容 考情分析...

数据库分库分表中间件选择

目前分库分表的中间件有三种设计思路&#xff0c;分别是&#xff1a; 采用分散式架构&#xff0c;适用于用Java开发的高性能轻量级OLTP应用程序&#xff0c;以Sharding-JDBC为代表。采用中间层Proxy架构&#xff0c;提供了静态输入和所有语言支持&#xff0c;适用于OLAP应用程…...

代码随想录算法训练营第22天|235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 一、力扣235.二叉搜索树的最近公共祖先1.1 题目1.2 思路1.3 代码 二、力扣701.二叉搜索树中的插入操作2.1 题目2.2 思路2.3 代码 三、力扣450.删除二叉搜索树中的节点3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣235.二叉搜索树的最近公共祖先 1.1 题目 1.2 思路 利用二叉…...

基于SpringBoot的医护人员排班系统详细开题报告(源码)

项目源码&#xff1a;https://gitee.com/oklongmm/biye2​ 引言 医护人员排班系统是医疗机构中的重点管理工作之一。借助现代化的计算机技术&#xff0c;可以大大提升排班的效率和精准度。因此&#xff0c;本研究旨在使用SpringBoot框架设计和实现一个功能完善的医护人员排班…...

CDH6.3.1离线安装

一、从官方文档整体认识CDH 官方文档地址如下&#xff1a; CDH Overview | 6.3.x | Cloudera Documentation CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算&#xff0c;以及基于Web的用户界面和重…...

Pytorch之卷积操作

卷积是一种基本的数学操作&#xff0c;常用于信号处理和图像处理领域。在计算机视觉中&#xff0c;卷积操作是一种重要的技术&#xff0c;用于提取图像的特征并进行图像处理。 卷积操作基于一个卷积核&#xff08;也称为滤波器或权重&#xff09;&#xff0c;它是一个小的矩阵…...

瑞萨RZ系列核心板选型指南:从A55到RISC-V的嵌入式开发实战

1. 项目概述&#xff1a;当国产方案商遇上日系芯片巨头在嵌入式开发这个圈子里混久了&#xff0c;你会发现一个有趣的现象&#xff1a;很多项目在启动时&#xff0c;面临的第一个灵魂拷问往往不是“功能怎么实现”&#xff0c;而是“平台怎么选”。是追求极致的性能&#xff0c…...

Claude Code 接入 GLM-4-Flash 永久免费模型 完整配置指南

&#x1f680; Claude Code 接入 GLM-4-Flash 永久免费模型 完整配置指南 下面是从注册 API Key 到 Claude Code 配置的全流程步骤&#xff0c;Windows 系统可直接照搬操作&#xff0c;全程零成本。 第一步&#xff1a;获取智谱 AI GLM-4-Flash API Key 注册账号访问智谱 AI …...

技术突破:如何让ARM设备突破x86架构的束缚?

技术突破&#xff1a;如何让ARM设备突破x86架构的束缚&#xff1f; 【免费下载链接】box64 Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices 项目地址: https://gitcode.com/gh_mirrors/bo/box64 你是否曾…...

Captain AI:Ozon俄文内容本地化,打破语言壁垒,贴合本土需求

俄文内容本地化是Ozon商家立足俄罗斯市场的核心前提&#xff0c;Ozon平台95%以上的用户为俄语母语者&#xff0c;纯中文或机翻的内容不仅会导致搜索曝光降低&#xff0c;还可能因语言错误引发合规风险、影响买家信任。然而&#xff0c;国内商家普遍面临“俄语专业人才短缺、机翻…...

NY382固态MT29F32T08GSLBHL8-24QM:B

NY382固态MT29F32T08GSLBHL8-24QM:B当工业设备在极端环境下稳定运行&#xff0c;其核心存储的每一次数据读写&#xff0c;都决定着生产线的效率与安全。一颗看似平凡的存储芯片&#xff0c;背后是无数工程师在稳定性、耐久性与环境适应性之间的精妙权衡。今天&#xff0c;我们聚…...

2026年免费照片去水印软件App排行榜|去水印App推荐和评测指南

照片被水印困扰是很多用户的常见问题。无论是保存网络上的精美图片、处理工作资料&#xff0c;还是制作个人素材库&#xff0c;去水印都是一个实用的需求。本篇文章根据2026年最新的工具体验&#xff0c;为你梳理免费照片去水印软件app有哪些、各类去水印App怎么选择&#xff0…...

APK Installer:重新定义Windows运行Android应用的突破性方案

APK Installer&#xff1a;重新定义Windows运行Android应用的突破性方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows系统上运行Android应用的传统方案往往…...

2025_NIPS_Language Models Don‘t Always Say What They Think: Unfaithful Explanations in Chain-of-T...

文章主要内容与创新点总结 一、主要内容 该研究聚焦大语言模型(LLMs)的思维链(CoT)提示法,核心探讨CoT解释的“不忠实性”——即模型生成的分步推理过程可能无法真实反映其预测的底层逻辑,反而会系统性地误导用户。 研究背景:CoT提示法通过引导模型输出分步推理再给出…...

AI+HR 全生命周期智能管理实战指南:从概念到落地,解锁组织效能新增长!​

在企业数字化转型的浪潮中&#xff0c;人力资源管理正经历着前所未有的变革。据行业数据&#xff0c;61% 的 HR 领导者已进入 GenAI 实施进阶阶段&#xff0c;82% 的企业计划在 12 个月内部署 AI 智能体&#xff0c;而 AI 驱动的企业人均效能已实现3.2 倍提升。当传统 HR 深陷事…...

ESXi 7.0升8.0后VM启动失败?硬件版本降级就搞定

很多运维人员将ESXi 7.0成功升级到8.0后&#xff0c;会遇到一个棘手问题&#xff1a;原有虚拟机&#xff08;VM&#xff09;无法启动&#xff0c;弹出错误提示“incompatible hardware version”&#xff08;不兼容的硬件版本&#xff09;。其实故障核心原因很明确&#xff1a;…...