c语言学习记录(十)———函数

文章目录

  • 前言
  • 一、函数的基本用法
  • 二、函数的参数传递
    • 1.基本方式
    • 2 数组在函数中的传参


前言

一个学习C语言的小白~ 有问题评论区或私信指出~

提示:以下是本篇文章正文内容,下面案例可供参考

一、函数的基本用法

函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空

一般形式如下:

<数据类型><函数名称> (<形式参数>)
{语句序列;return[(<表达式>)]}
  • 数据类型:是整个函数的返回值类型
  • return语句中表达式的值要和函数的数据类型一致,如无返回值应写为void
  • 形式参数说明是 逗号 ”,“ 分隔的多个变量的说明形式
  • 大括弧对语句序列,称为函数体,是大于等于零个语句构成的。
  • 函数的说明就是指函数原型。
  • 其中,形式参数说明 可以缺省说明的变量名称,但是类型不能缺省
  • 例如
	 double Power(double x,int n);double Power(double,int);
  • 函数的使用也叫做函数的调用,形式如下:
  • 函数名称(<实际参数>)
    调用:
	<函数名称>  (<实际参数>)例:max(a,b);
  • 实参就是在使用函数时,调用函数传递给被调函数的数据。需要确切的数据
  • 函数调用可以作为一个运算量出现在表达式中,也可以单独形成一个语句,对于无返回值的函数来讲
    只能形成一个函数调用语句

题目:编写一个函数显示:”你好C语言“。
题目:定义求 x^n 指的函数(x是实数,n为正整数)

#include <stdio.h>
#include <stdlib.h>void HiC();
int XpowY(int,int);
int main()
{int a = 2,b = 3;HiC();int c = XpowY(a,b);printf("c = %d\n",c);return 0;
}void HiC()
{printf("你好,C语言!\n");
}int XpowY(int x,int y)
{int i,temp = 1;for(i = 0;i<y;i++){temp *= x;}return temp;
}

在这里插入图片描述

二、函数的参数传递

1.基本方式

函数之间的参数传递方式:

  • 全局变量
  • 复制传递的方式
  • 地址传递的方式

全局变量

  • 全局变量就是在函数体外说明的变量,它在程序中的每个函数里都是可见的。
  • 全局变量一经定义后就会在程序的任何地方可见。函数调用的位置不同
    程序的执行结果可能会受到影响,不建议使用。

复制传递方式

  • 调用函数将实参传递给被调用函数,被调用函数将创建同类型的形参并用实参初始化。
  • 形参是新开辟的存储空间,因此在函数中改变形参的值,不会影响到实参。(函数未被调用前形参不占内存空间,函数调用结束形参就被销毁)

地址传递方式

  • 按地址传递,实参为变量的,而形参为同类型的指针
  • 被调用函数中对形参的操作,将直接改变实参的值
    (被调用函数对指针的目标操作相当于对实参本身的操作)

2 数组在函数中的传参

全局数组传递的方式
复制传递方式
实参为数组的指针,形参为数组名(本质上是一个指针变量)
地址传递方式
实参为数组的指针,形参为同类型的指针变量。

题目:计算一个一维整型数组的所有元素的和
题目:删除字符串中的空格
题目:编写一个函数统计字符串中大小字母的个数,并把小写转化成大写,大写转换成小写

//一维数组求和函数
#include <stdio.h>
#include <stdlib.h>int SumArr(int arr[],int n);
int main()
{int sum;int brr[] = {1,2,3,4,5,6,7,8,9,10};sum = SumArr(brr,10);printf("%d",sum);return 0;
}int SumArr(int arr[],int n)
{int i,sum = 0;for(i = 0;i < n;i++){sum += arr[i];}return sum;
}
//删除空格方法一
#include <stdio.h>
#include <stdlib.h>void DeleteSpeace(char str[]);
int main()
{char str[] = "a b c d e f";printf("Before Delete:%s\n",str);DeleteSpeace(str);printf("After Delete:%s\n",str);return 0;
}
void DeleteSpeace(char str[])
{int lenth;while(str[lenth] != '\0'){lenth++;//遍历出数组长度}for(int i = 0;i<=lenth;i++){if(str[i] == ' '){str[i] = str[i+1];//如果遇到空格把前面的数往前移int j;for(j = i+1;j<lenth;j++){str[j] = str[j+1];}}}}
//方法2
void DeleteSpeace(char *str);
int main()
{char str[] = "a b c d e f";printf("Before Delete:%s\n",str);DeleteSpeace(str);printf("After Delete:%s\n",str);return 0;
}
void DeleteSpeace(char *s) 
{int begin = 0, end = 0;while(s[end]!='\0') //判断s[end]是否为空格{if (s[end] != ' ') {s[begin] = s[end];//不是空格把值付给s[begin]begin++;end++;} else {end++;//是空格end++跳过空格赋值}}s[begin] = '\0';
}
#include <stdio.h>
#include <stdlib.h>void toCapsLock(char *str,int *BigLenth,int *SmallLenth);
int main()
{char str[] = "abcDEF";int BigLenth = 0,SmallLenth = 0;printf("Before:%s\n",str);toCapsLock(str,&BigLenth,&SmallLenth);printf("After:%s\n",str);printf("Big:%d Small:%d",BigLenth,SmallLenth);return 0;
}void toCapsLock(char *str,int *BigLenth,int *SmallLenth)
{for(int i = 0;str[i] != '\0';i++){if(str[i] >= 'a' && str[i] <= 'z'){str[i] -= 32;(*SmallLenth)++;}else if(str[i] >= 'A' && str[i] <= 'Z'){str[i] += 32;(*BigLenth)++;}}}

在这里插入图片描述

有关指针部分将在指针章节讲解~

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

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

相关文章

海外代理IP哪个可靠?如何测试代理的稳定性?

在数字化时代&#xff0c;互联网已成为我们日常生活的重要组成部分。然而&#xff0c;随着网络活动的增加&#xff0c;我们面临的安全威胁也随之增加。 黑客攻击、数据泄露、网络钓鱼等安全事件频发&#xff0c;严重威胁着我们的个人隐私和网络安全。代理服务器在当今的互联网世…

深入学习Java1415新特性

一、超实用的Java14新特性 1.Java14新特性概述 2.环境安装 3.超实用新特性

LLM大模型算法学习资源持续整理

文章目录 waytoagiLLM101llm-coursellm-cookbook waytoagi 飞书文档写的AGI知识库。 https://www.waytoagi.com/ LLM101 karpathy更新中的大模型教程&#xff1a; https://github.com/karpathy/LLM101n llm-course Course to get into Large Language Models (LLMs) wi…

node mySql 实现数据的导入导出,以及导入批量插入的sql语句

node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09; node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09;-CSDN博客https://blog.csdn.net/snows_l/article/details/139999392?spm1001.2014.3001.5502 一、效果 如图&#xff1a; 二、导入 …

iOS 实现类似抖音滚动效果

效果图 思路 整体上我们使用tableView实现&#xff0c;为了预留内容的缓冲&#xff0c;我们将tableView 的contentinset设置为上面一个屏幕的高度&#xff0c;下面一个屏幕的高度&#xff0c;左右为0&#xff0c;这样保证我们滚动过去的时候 都是准备好的内容 然后就是滑动效果…

25届最近4年中国科学技术大学自动化考研院校分析

中国科学技术大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近4年考研分数情况 四、近4年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、…

Java:从嵌入式到云时代的编程语言传奇

Java&#xff0c;自1995年面世以来&#xff0c;已成为全球最受欢迎的编程语言之一。起初&#xff0c;Sun Microsystems公司为了解决嵌入式设备编程的难题&#xff0c;开发了Oak语言&#xff0c;这便是Java的前身。随着互联网的兴起&#xff0c;Oak更名为Java&#xff0c;并迅速…

ONLYOFFICE 8.1版本桌面编辑器测评:超越想象的办公体验!

在当今数字化办公时代&#xff0c;一个功能强大、操作便捷的办公套件对于提高工作效率至关重要。ONLYOFFICE 8.1作为一款备受瞩目的办公软件&#xff0c;凭借其全面的功能、优异的性能和出色的用户体验&#xff0c;为用户带来了超越想象的办公体验。下面&#xff0c;我们将对ON…

SHELL/2024/6/26

1.统计家目录下.c文件的个数 #!/bin/bash count0 for filename in $(ls ~ *.c) do ((count)) done echo count$count 2.终端输入一个.sh文件&#xff0c;判断文件是否具有可执行权限/然后运行脚本&#xff0c;没有可执行权限&#xff0c;添加可执行权运行脚本 #!/bi…

ue 材质贴图Tiling repeat

材质问题&#xff0c;如下 贴图显然不符合逻辑&#xff0c;太大&#xff0c;并且是一次性贴图 换一个红砖纹理&#xff0c;就看清了&#xff0c;砖太大了 修改&#xff1a; 拖出一个TexCoord&#xff0c;代表坐标&#xff0c;拖出一个参数&#xff0c;代表次数&#xff0c;如…

6.22套题

B. Dark 题意&#xff1a;每次能在数列中能使相邻两个数-1&#xff0c;求当数列没有连续非0值的最小贡献 解法:设表示前i个数中前i-1个数是否为0&#xff0c;当前数是j的最小贡献。表示i1以后减掉d的最小贡献。 C. 幸运值 D. 凤凰院真凶

视觉分割的定义与性能度量

文章目录 视觉分割的定义语义分割(Semantic Segmentation)实例分割(instance Segmentation)全景分割(Panoptic Segmentation)视频语义分割(Video Semantic Segmentation)视频实例分割(Video instance Segmentation)视频全景分割(Video Panoptic Segmentation)各任务对比 视觉分…

云计算【第一阶段(21)】引导过程与服务控制

目录 一、linux操作系统引导过程 1.1、开机自检 1.2、MBR引导 1.3、GRUB菜单 1.4、加载 Linux 内核 1.5、init进程初始化 1.6、简述总结 1.7、初始化进程centos 6和7的区别 二、排除启动类故障 2.1、修复MBR扇区故障 2.1.1、 实验 2.2、修复grub引导故障 2.2.1、实…

基于redisson实现tomcat集群session共享

目录 1、环境 2、修改server.xml 3、修改context.xml 4、新增redisson配置文件 5、下载并复制2个Jar包到Tomcat Lib目录中 6、 安装redis 7、配置nginx负载均衡 8、配置测试页面 9、session共享测试验证 前言&#xff1a; 上篇中&#xff0c;Tomcat session复制及ses…

【UE5.3】笔记3-静态网格体,BSP

静态网格体组件 主要有两个属性 一个是静态网格体&#xff1a;对应的也就是模型&#xff0c;比如fbx&#xff0c;maya&#xff0c;obj等格式 一个是材质&#xff1a;由各种贴图、渲染设置等&#xff0c;比如unity里的shader BSP画刷&#xff1a; 打开放置Actor选项卡&#…

做到这九点,工作就无后顾之忧

大家好&#xff0c;今天又跟大家分享一篇&#xff0c;怎么在职场上做到挺起腰杆做事。全文共分9点&#xff0c;尤其最后一点最为重要。篇幅有点长&#xff0c;全文共计三千多字&#xff0c;请耐心看完。 如果您觉得对您有些帮助&#xff0c;点赞收藏关注。谢谢您的支持。 在职场…

嵌入式项目分享| 终极智能手表,全过程+全开源分享

这是一个非常完整的智能手表开源项目,功能齐全,且资料开源,如果你是:自己平时喜欢diy的工程师,想要提升开发技能的学生,马上要做毕设的大四学生,这个手表很值得一做,别错过了~~ 所有开源的资料以及原文链接见文末。 先来看下这个手表的功能: 首先,是一个可以佩戴的手…

windows10 无法识别双频合一的5Gwifi

windows10 无法识别双频合一的5Gwifi 在网络配置中指定 wireless mode 为802.11a 或802.11ac 这两个是 5G网络的协议&#xff0c;如果不存在则说明无线网卡不支持5G网络

修改docker中mongodb容器的时区

假设容器名称为mongodb&#xff0c;设置时区为上海时区的命令为&#xff1a; docker exec -it mongodb bash -c "ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone"验证时区更改&#xff1a; docker e…

51单片机STC89C52RC——9.1 DS1302涓流充电计时芯片

目录 目的/效果 一&#xff0c;STC单片机模块 二&#xff0c;DS1302计时器 2.1 特性/板子位置 2.1.1 特性 2.1.2 板子上的位置 2.2 针脚定义 2.3 数据传输 2.3.1 读数据 2.3.2 写数据 2.4 BCD码 2.5 可编程涓流充电器 2.6 时钟动态设置 三&#xff0c;创建Keil项目…