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,一经查实,立即删除!

相关文章

中国电子学会青少年编程等级考试真题下载

全国青少年软件编程等级考试真题下载&#xff0c;有答案解析 1. 图形化Scratch一级下载 链接&#xff1a;https://pan.baidu.com/s/1C9DR9-hT1RUY3417Yc8RZQ?pwdg8ac 提取码&#xff1a;g8ac 2.图形化Scratch二级下载 链接&#xff1a;https://pan.baidu.com/s/1HI7GaI4ii…

EtherCAT主站IGH -- 0 -- 该EtherCAT主站IGH专栏后续安排

EtherCAT主站IGH -- 0 -- 该EtherCAT主站IGH专栏后续安排 0 IGH视频欣赏及源代码链接&#xff1a;1 该EtherCAT主站IGH专栏后续安排1.1 介绍IGH文件和函数:1.2 介绍IGH主要结构体:1.3 在Ubuntu系统环境搭建自己的EtherCAT主站:1.4 使用Wireshark监控并分析EtherCAT数据:1.5 介绍…

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

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

深入学习Java1415新特性

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

PyCharm:功能强大的Python IDE的下载与安装

目录 1. PyCharm2. PyCharm下载3. PyCharm安装4. PyCharm的Python配置1. PyCharm 是一款由JetBrains公司开发的Python集成开发环境(IDE)。它提供了一整套强大的工具和功能,帮助Python开发人员提高工作效率,简化编程流程。PyCharm主要具有以下特点和功能: 编码协助:PyCha…

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、…

Qt高分辨率自适应后,获取当前设备像素比

qt常用的高分辨率自适应&#xff0c;在main中设置之后&#xff0c;我们的软件界面就可以根据当前显示器的分辨率&#xff0c;自动缩放了。&#xff08;QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);&#xff09; 但与此同时&#xff0c;qt一些桌面屏幕类获取…

在 PHP 框架(如 Laravel 或 Symfony)中,如何实现高效的路由配置和控制器管理?

在 Laravel 和 Symfony 这样的 PHP 框架中&#xff0c;实现高效的路由配置和控制器管理通常可以通过以下步骤完成&#xff1a; 路由配置&#xff1a;在框架的路由文件中&#xff0c;定义各个 URL 路由的对应关系。你可以指定路由的请求方法、URL 格式和处理该请求的控制器方法…

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

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

React小记(四)_路由的基本使用

react-router V6 1、React-router 的三个版本 1、React-router 服务端使用2、React-router-dom 浏览器端使用3、React-router-native React-native 混合开发使用2、基本使用 基本使用步骤如下&#xff1a;1、选择路由模式 history/hash 包裹在想要使用路由的组件外面包裹的好处…

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. 凤凰院真凶

什么是区块链?——从零开始的区块链入门指南

在这个信息爆炸的时代&#xff0c;区块链这个词儿已经成了热词儿。那么&#xff0c;区块链到底是啥玩意儿呢&#xff1f;别急&#xff0c;今天咱们就从头开始&#xff0c;给你掰扯掰扯区块链的来龙去脉&#xff0c;让你轻松入门。 一、区块链的定义 想象一下&#xff0c;区块…

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

文章目录 视觉分割的定义语义分割(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、实…