C语言之函数调用

article/2025/9/1 14:41:18

C语言之函数调用

“温故而知新,可以为师矣”!
让我们开启函数的道路吧!
今天主要讲函数的调用方式!
在讲之前,先回顾一下实际参数和形式参数的区别;
1.在定义函数时函数名后面括号中的变量名称为“形式参数”(简称‘形参’);

int function(int x,int y)// x,y为形参
{int sum;sum=x +y;return sum;
}

2.在主调函数中调用一个函数时,函数名后面的括号中的参数为“实际参数”(简称‘实参’);

void main()
{int a=1,b=2;function(a,b);  //a,b为实参
}

废话不多说,让我们开始今天的正题吧!
函数调用分为两种,传值调用和引用调用!!

  1. 传值调用
    所谓的传值调用,就是把参数的实际值复制给函数的形式参数,这样子修改函数内的形参不会影响到实参。让我们通过例子来体会吧。
include<stdio.h>
int sum(int x,int y);  //函数的声明
int main()
{int a=2,b=3;printf("%d\t %d\t %d\t",sum(a,b),a,b);//将a,b的值传给sum函数,并且输出sum(a,b),a,b的值return 0;
}
int sum( int x,int y) //函数的定义
{
int n;
n=x;
x=y;
y=x;   //交换x,y的值进行交换
return x+y;
}

在这里插入图片描述
从结果中我们可以看出,传值调用不会影响实参的值
2. 引用调用
引用调用,就是让形参为指向实参地址的指针,所以对形参的指向操作时,就相当于对实参进行操作。让我们通过例子来体会吧!!

#include<stdio.h>
void swap(int *x,int *y);  //函数的声明
int main()
{int a=2,b=3;swap(&a,&b);  //将a,b的地址传给swap函数printf("%d\t %d\n",a,b);return 0;
}
void swap(int *x,int *y) //函数的定义
{int m;m=*x;*x=*y;*y=m;  //交换 *x和*y的值
}

结果如上
形参不仅可以为指针变量,也可以是数组
形参数组可以不指定大小,在定义时在数组名的后面跟一个空的方括号;
下面让我们通过例子来说明一下。
以下是一个替代strcat 的简单程序

#include<stdio.h>void Strcat(char a[],char b[],char c[]); // 函数的声明
void main()
{char a[100],b[100],c[200];printf("please enter string_a:\n");gets(a);     //输入一个字符串 printf("please enter string_b:\n");gets(b);Strcat(a, b, c);  //将数组a,b,c的首地址传入Strcat函数printf("%s",c);	
} 
void Strcat(char a[],char b[],char c[])  //函数的定义
{int i,j;for( i=0;a[i]!='\0';i++)c[i]=a[i];for( j=0;b[j]!='\0';j++)c[i+j]=b[j];c[i+j+1]='\0';	
}

在这里插入图片描述
这个程序也可以采用传值调用,但是意义不大。
以上就是全部内容啦,如果感觉对你有帮助的话,那就动动手指点个赞吧!!


http://chatgpt.dhexx.cn/article/B92nN8bW.shtml

相关文章

C语言函数的调用

函数调用&#xff08;Function Call&#xff09;&#xff0c;就是使用已经定义好的函数。函数调用的一般形式为&#xff1a; functionName(param1, param2, param3 ...);functionName 是函数名称&#xff0c;param1, param2, param3 …是实参列表。实参可以是常数、变量、表达…

Windows编程-001

如果建立的是Win32控制台工程&#xff08;入口函数是main函数&#xff09;的话&#xff0c;WinMain函数不能作为入口函数&#xff0c;如果想要解决这个问题的话&#xff0c;可以打开项目属性->链接器->系统->子系统&#xff0c;把子系统对应的“控制台”改为“窗口”。…

windows全系1

windows操作系统专贴(一定有你想要的) 2006年12月01日 22:25 windows 98 简体中文零售版第三版 语言&#xff1a;简体中文 类型&#xff1a;操作系统 大小&#xff1a;180MB 环境&#xff1a;9x/Me/NT/2000/XP/.Net/ 授权&#xff1a;零售版 软件介绍:这个版本是SE的改进版,比前…

对不起,说句粗话——这个太屌了,windows1.0安装程序(附下载)

今天逛一个软件论坛发现的&#xff0c;只有几百K。遥想当今我刚接触windows的版本是3.1&#xff0c;当时记得很清楚哦&#xff0c;进入windows要从dos命令行进入。现在一转眼&#xff0c;变成进入伪dos是运行栏里敲cmd了。 唉&#xff0c;想当年尿尿还能疵2米多远的时候&#…

Windows入门(一)

本人正在学习Windows编程操作&#xff0c;所以进行一些记录&#xff0c;希望对刚入门的个位有所帮助。 目录 1.什么是win32编程 2. 一个简单的win32程序 2.1 创建一个空项目 2.2 入口函数 2.3 注册窗口 2.3.1 窗口回调函数 2.4 创建窗口 2.5 显示窗口 2.6 更新窗口 3.…

win11网页版

网页版地址 点它 https://win11.blueedge.me/ 其github库地址其github库地址https://github.com/blueedgetechno/win11React/

windows10/11子系统安装ubuntu22.04

学习目标&#xff1a; winfows10/11 安装wsl内核 基于wsl内核安装Ubuntu系统 基于ubuntu系统安装docker环境 学习内容&#xff1a; 系统下安装wsl2下载ubuntu安装包windows11 安装ubuntu 22.04系统ubuntu 22.04 安装dockerdocker 启动、测试 windows下安装wsl2内核 1、如果未…

快速教你在虚拟机上完美安装Windows1.0

想必不用我说大家用虚拟机安装Windows1.0时都是这样的: 今天我就来教大家如何正确安装Windows1.0 因为在1985年(Windows1.0诞生的年代)的鼠标驱动已经不匹配我们的电脑了,所以我们需要先解决鼠标这个问题。 第一步: 打开UltraISO,在里面打开我们Windows1.0第一个镜像(…

Windows:

服务主机:本地系统(网络受限) CPU利用率高&#xff0c;磁盘利用率高 解决方法&#xff1a; 方法一&#xff1a;禁用SuperFetch服务 计算机&#xff1a;—右键“管理”—SuperFetch—停止。或属性—-禁用。 开机就占用50%的内存&#xff08;共8G&#xff09; 关闭家庭组  家…

Windows1.0到Windows10三十年进化史,你还记得自己最初使用的系统吗?

从1985年Windows 1.0正式诞生到2015年Windows 10诞生&#xff0c;微软花了三十年的时间&#xff0c;从像素化桌面到现在扁平化的界面。让我们来看一下Windows 1.0到Windows10三十年来的变化。 1、1985年11月20日&#xff0c;微软发布了第一版的Windows操作系统——Windows1.0。…

【Docker】 Windows10运行Windows镜像时常见错误

项目场景:【Docker】 Windows10运行Windows镜像常见错误 很多项目要求在Windows系统下运行,但开发环境的安装相对复杂,并且难以重新配置到新设备,甚至会出现多个项目的运行环境相互冲突和干扰的情况,这时候配置好一个镜像后就可以一劳永逸解决很多问题,直接用docker拉取Window…

Windows 1.0

Windows 1.0 是微软于1985年11月发布的第一款基于dos的pc图形操作平台.要安装Windows 1.0 先安装好ms-dos2.11.对于ms-dos3以上的,只能看见一个类似资源管理器的程序.因为现在很找到一个很破旧的电脑,所以只能通过虚拟机来实现.推荐使用VMware虚拟机.先进入dos2.11,如下图所示 …

重温经典:Windows1.0系统体验和尝试自己编写Windows1.0系统

相关说明 如果你觉得文章含有侵权部分&#xff0c;可以联系CSDN私聊&#xff0c;我会适当修改。 未经允许&#xff0c;不得转载&#xff0c;如需转载&#xff0c;请CSDN私聊。 Windows Windows&#xff0c;意思是窗口&#xff0c;窗户。当然&#xff0c;他也是一个操作系统的…

[笔记]深入解析Windows操作系统《一》概念和工具

文章目录 前言1.1 Windows操作系统的版本1.2 基础概念和术语Windows API关于 .NetWin32 API 历史服务、函数、例程进程、线程和作业进程tlist /t 查看进程树任务管理查看进程Process Explorer查看进程的细节 线程纤程与用户模式调度器线程 虚拟内存内核模式和用户模式终端服务及…

Windows操作系统各版本的历史 Windows系统历史版本简介

30年间Windows系统有哪些版本&#xff1f;还记得你第一次了解到Windows操作系统存在的时候是哪一年吗&#xff1f;这些操作系统又有哪些特点呢&#xff1f;隐约知道计算机变得越来越小了吗……现在笔者将通过收集的资料&#xff0c;为各位细细解说曾经的操作系统。 30年间Wind…

[字符串]ASCII码表

数字&#xff0c;字母位置 数字0~9对应的ASCII码&#xff08;十进制&#xff09;袭为“48”~“57”大写字母A~Z对应的ASCII码&#xff08;十进制&#xff09;为“65”~“90”小写字母a~z对应的百ASCII码&#xff08;十进制&#xff09;为"97"~“122”表

ASCII 码不同的两种空格:32 和160

背景 在 Linux 下手写一个命令和拷贝 html 页面文本域中的命令执行结果完全不同&#xff0c;后者的命令无法被 Linux 识别。 问题截图 肉眼根本看不出来这两行有什么区别&#xff0c;但执行结果就是有问题。 问题定位 编写测试代码&#xff0c;执行两个字符串的 equals 方法…

ASCII码作用简介

《Linux下的^M困惑》曾提到\r对应的ASCII码十进制形式是13(无显示形式)&#xff0c;对应的八进制形式是15(显示为^M)&#xff0c;有朋友在后台反馈对ASCII码有些疑惑&#xff0c;因此在这&#xff0c;简单介绍下ASCII。 ASCII&#xff0c;英文全称是American Standard Code for…

什么是ASCII码?

ASCII 表 分类 编程技术 ASCII&#xff08;发音&#xff1a;&#xff0c;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语&#xff0c;而其扩展版本延伸美国标准信…

ASCII码对照表(嘤嘤怪自用)

软件Visual Studio 2022 C语言 ASCII码中 字母的ASCII码大小&#xff1a; “A”为65&#xff1b;“a”为97&#xff1b;“0”为 48 同个字母的大写字母比小写字母要小32 因此字母的大小转换可以加减32实现 ASCII码 1. 数字表达字母 源代码 #include <stdio.h…