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

news2024/10/6 10:43:05

文章目录

  • 前言
  • 一、函数的基本用法
  • 二、函数的参数传递
    • 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.coloradmin.cn/o/1866504.html

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

相关文章

使用Dropout大幅优化PyTorch模型,实现图像识别

大家好&#xff0c;在机器学习模型中&#xff0c;如果模型的参数太多&#xff0c;而训练样本又太少&#xff0c;训练出来的模型很容易产生过拟合的现象。在训练神经网络时&#xff0c;过拟合具体表现在模型训练数据损失函数较小&#xff0c;预测准确率较高&#xff0c;但是在测…

gc.log中 CMS-concurrent-abortable-preclean

问题 在gc日志中看到 2024-06-26T16:16:07.5040800: 64690272.666: [CMS-concurrent-abortable-preclean-start]CMS: abort preclean due to time 2024-06-26T16:16:12.5530800: 64690277.716: [CMS-concurrent-abortable-preclean: 1.052/5.049 secs] [Times: user1.33 sys0…

点云处理实战 PCL求解点云表面曲率

目录 一、什么是曲率 二、曲率计算过程 三、pcl 求解点云局部曲率 四、思考?为何曲率计算会使用协方差矩阵? 五、推荐阅读 一、什么是曲率 曲率是几何学中用来描述曲线或曲面形状变化的一个量。它反映了曲线或曲面的弯曲程度。在不同的上下文中,曲率的定义和计算方式有…

C语言 指针——向函数传递字符串

目录 向函数传递字符串 计算实际字符个数 用字符数组编程实现字符串复制 用字符指针编程实现字符串复制 关于程序的效率的几点建议 向函数传递字符串 向函数传递字符串时  既可用 字符数组 作函数参数  也可用 字符指针 作函数参数 Simulating Call by reference &…

第二期书生·浦语大模型实战营优秀项目一览

书生浦语社区于 2023 年年底正式推出了书生浦语大模型实战营系列活动&#xff0c;至今已有两期五批次同学参加大模型学习、实战&#xff0c;线上课程累计学习超过 10 万人次。 实战营特设项目实践环节&#xff0c;提供 A100 算力支持&#xff0c;鼓励学员动手开发。第 2 期实战…

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项目…

算法导论 总结索引 | 第四部分 第十六章:贪心算法

1、求解最优化问题的算法 通常需要经过一系列的步骤&#xff0c;在每个步骤都面临多种选择。对于许多最优化问题&#xff0c;使用动态规划算法求最优解有些杀鸡用牛刀了&#xff0c;可以使用更简单、更高效的算法 贪心算法&#xff08;greedy algorithm&#xff09;就是这样的算…

云服务器部署LNMP Web环境教程合集(多版linux系统安装方法)

LNMP环境包括Linux、Nginx、MySQL和PHP&#xff0c;Nginx是一款小巧而高效的Web服务器软件&#xff0c;使用阿里云服务器搭建LNMP Web网站环境很简单&#xff0c;支持多种LNMP环境部署教程&#xff0c;可使用ROS模板部署、LNMP镜像以及基于不同Linux操作系统手动部署LNMP全流程…

华为仓颉编程语言正式发布!相比Java、Go、Swift优势在哪?附入门教程~

在2024年6月21日举行的华为开发者大会上&#xff0c;华为公司不仅对外宣布了其新一代鸿蒙操作系统HarmonyOS NEXT&#xff0c;还正式发布了他们自主研发的编程语言&#xff0c;名为仓颉。 我们一起看看仓颉编程语言的定位及其优势所在&#xff0c;以及它的入门教程&#x1f4aa…

Scania斯堪尼亚SHL题库综合能力性格测试真题题型解析及面试经验

一、走进Scania斯堪尼亚 Scania是一家成立于1891年的瑞典公司&#xff0c;专注于重型卡车和巴士的制造&#xff0c;以其模块化系统和环保设计闻名。作为全球领先的运输解决方案提供商&#xff0c;Scania不仅提供高质量的车辆&#xff0c;还提供相关服务和融资解决方案。公司秉…

大模型课程资料-全网最火29套全栈大模型项目实践

29套AI全栈大模型项目实战&#xff0c;人工智能视频课程-多模态大模型&#xff0c;微调技术训练营&#xff0c;大模型多场景实战&#xff0c;AI图像处理&#xff0c;AI量化投资&#xff0c;OPenCV视觉处理&#xff0c;机器学习&#xff0c;Pytorch深度学习&#xff0c;推荐系统…

国际现货黄金最新价格如何分析?结合较高的时间周期

国际现货黄金投资是一种24小时交易的品种&#xff0c;这意味着&#xff0c;在交易日我们打开电脑图表&#xff0c;分析完走势之后就有机会做交易了。但问题也出在这里&#xff0c;如果对国际现货黄金最新价格把握不住&#xff0c;分析和交易就无从谈起了&#xff0c;下面我们就…

【SkiaSharp绘图11】SKCanvas属性详解

文章目录 SKCanvas构造SKCanvas构造光栅 Surface构造GPU Surface构造PDF文档构造XPS文档构造SVG文档SKNoDrawCanvas 变换剪裁和状态构造函数相关属性DeviceClipBounds获取裁切边界(设备坐标系)ClipRect修改裁切区域IsClipEmpty当前裁切区域是否为空IsClipRect裁切区域是否为矩形…

2023: 芒种集•序言

2023: 芒种集•序言 2023: 芒种集•序言 从西南旅游回来&#xff0c;一直忙着整理游记“2024&#xff1a;追寻红色足迹”&#xff0c;之后又应初建平索要刘桂蓉遗作“我们一起走过”&#xff0c;于是把“别了&#xff0c;老屋”和诗作“二月”一并合编&#xff0c;把我写的悼念…

线性代数基础概念:矩阵

目录 线性代数基础概念&#xff1a;矩阵 1. 矩阵的定义 2. 矩阵的运算 3. 矩阵的特殊类型 4. 矩阵的秩 5. 矩阵的初等变换 6. 矩阵的特征值与特征向量 7. 矩阵的应用 8. 矩阵总结 总结 线性代数基础概念&#xff1a;矩阵 矩阵是线性代数中的另一个重要概念&#xff0…

数据结构——

1. 什么是并查集&#xff1f; 在计算机科学中&#xff0c;并查集&#xff08;英文&#xff1a;Disjoint-set data structure&#xff0c;直译为不数据结构交集&#xff09;是一种数据结构&#xff0c;用于处理一些不交集&#xff08;Disjoint sets&#xff0c;一系列没有重复元…

使用 position:absolute; 定位的元素在ios上被遮盖

在ios上一个元素使用position:absolute;定位后&#xff0c;被其它元素遮盖 在使用absolute的元素上加一行代码 -webkit-transform: translate3d(0, 0, 0);

【YashanDB知识库】YAS-00103 no free block in dictionary cache

【问题分类】功能使用 【关键字】YAS-00103&#xff0c;no free block in dictionary cache 【问题描述】执行union all 太多子查询导致报错&#xff0c;例子如下&#xff1a; 【问题原因分析】 选择增大DICTIONARY_CACHE_SIZE 或 SHARE_POOL_SIZE 或 两者都增大 【解决/规…

杭州代理记账报税全程托管专业实力全面指南

杭州代理记税报税服务可以为企业提供全程托管财务管理解决方案&#xff0c;确保企业的财务工作专业、高效、合规。以下是杭州代理记税报税服务全面指南&#xff1a; https://www.9733.cn/news/detail/185.html 一、代理记账报税服务的内容 基础服务&#xff1a; 每日记&#xf…

使用supportFragmentManager管理多个fragment切换

android studio创建的项目就没有一个简单点的框架&#xff0c;生成的代码都是繁琐而复杂&#xff0c;并且不实用。 国内的页面一般都是TAB页面的比较多&#xff0c;老外更喜欢侧边菜单。 如果我们使用一个activity来创建程序&#xff0c;来用占位符管理多个fragment切换&…