首页 > 其他分享 >function 函数

function 函数

时间:2024-07-01 23:00:16浏览次数:22  
标签:function 返回 函数 int 参数 数组 定义

很快,我们开始学函数了,还记得在我的某一篇帖子提过吗,不知道的点我。在以前的帖子的最后,我自己封装了俩函数。这篇帖子将会解释它们的意思


定义

我们要敲一个结构:

Typ Funct(Typ1 Param1, Typ2 Param2, ..., Typn, Paramn) {
	......
	return Val; 
}

它的意思是:定义一个返回类型为Typ的函数Funct,括号里分别是参数的类型和参数的名字。正常执行完成后,将会返回Val(返回后直接结束这个函数的执行)
学过图形化或python的都知道,怎么定义没有返回值的函数,学python的表示:

def funct(...) :
	......
	# 人家不给返回值就行了呀 #

但这是c++。在c++中,有一种类型:void。在作为类型时,它表示“没有返回值”。而在作为参数是,表示“空的,没有参数”,因此主函数int main()也可以写成int main(void)void后面不要跟变量!!! 无返回值函数想要停止执行,直接敲return,后面除了分号,什么也不要加

调用

操作函数就像这个样子

funct(Parma1, Parma2, ..., Praman); 

比如这样,我们就只做了一个算 n 2 n^{2} n2的函数(n是整数)

long long squ(int n) {
	return n*n; 
}

到时候要使用时就这样搞

squ(8) //返回64
squ(11) //返回121

这下来解析一下以前的代码

bool isprime(int n) { //判断是否为质数 
	if(n<=1) return 0; //1及以下的数不是质数也不是合数,因此返回0(也可以写成false)
	for(int i=2; i*i<=n; i++) //循环遍历,找出它是否有除1和它本身外的其他因数
		if(n%i==0) return 0; //有因数,就代表它是合数,因此返回0
	return 1; //它的确是质数,返回1(也可以写成true)
}

bool istotal(int n) { //判断是否为合数 
	if(n<=1) return 0; //1及以下的数不是质数也不是合数,因此返回0
	for(int i=2; i*i<=n; i++) //循环遍历,找出它是否有除1和它本身外的其他因数
		if(n%i==0) return 1; //它是合数,有三个及以上的因数,返回1
	return 0;//它是质数,返回0
}

调用起来就是这样的

isprime(5) //5只有因数1和5,是质数,返回1
isprime(6) //6有因数(1, 2, 3, 6),明显不是质数,返回0
istotal(10) //10是合数,返回1
istotal(1) //1既不是质数也不是合数,返回0

局部变量和全局变量

学过python的都知道,有的变量需要全局定义,需要用到一个关键字

global Vari

也可以直接在函数外面写,而在c++中就是运用这种方法,在函数外的是全局变量,在函数内的是局部变量。在c++中有一种摸不着头脑的定义,如果不是全局要用,就定义为局部变量,因为更节省内存;但定义二维动态数组时这么定义又可能会RE(在运行时返回3221225620或其他非0的返回值),因此要定义为全局变量,也不会MLE(内存超限)

参数属性

在定义函数的参数时,可能会有一些需要不断与main函数的变量同时改变。因此参数就有了两种类别:传值参数传引用参数

传值参数

在函数中填的值就是定义了一下参数,参数怎么改变,它都无动于衷,不知道的还以为卡壳了。它的定义方法就是直接按照以前的方法定义。

#include <iostream>
using namespace std; 
void f(int a, int b) {
	int t = a; 
	a = b; 
	b = t; 
}
int main() {
	int a=60, b=80; 
	f(a, b); 
	cout << a << ' ' << b << endl; 
	return 0; 
}

这段代码最终输出的是"60 80"(没有引号),因为两个值没有同步,子函数交换了,主函数却没有交换

传引用参数

它可以与变量同步,参数+1,原变量+1,参数-50,原变量也-50,定义方法是在类型后加一个&,意思是获得原变量的地址

#include <iostream>
using namespace std; 
void f(int& a, int& b) {
	int t = a; 
	a = b; 
	b = t; 
}
int main() {
	int a=60, b=80; 
	f(a, b); 
	cout << a << ' ' << b << endl; 
	return 0; 
}

而这个最终输出的就是"80 60"了,值同步了,因此函数内的交换它们也会变换

选填参数

定义,我们可以选择部分参数不填,可以直接在参数后像赋值一样填写,也就是Typ Param=Val这种参数必须放在必填参数的后方

数组操作

另外,想要操作数组,我们将数组参数后面的[]中选择什么也不填,而且在数组后面一般会填数组的项数,也可以定义一个全局的数组来进行操作。至于要返回一个数组,就需要用到指针了(以后会发)


这就是关于函数的定义
请添加图片描述
点赞,关注,散会

标签:function,返回,函数,int,参数,数组,定义
From: https://blog.csdn.net/2401_85898378/article/details/140110167

相关文章

  • popen函数
    目的开发过程中获取某个可执行文件的打印结果或者获取某个shell命令的打印结果原理FILE*popen(constchar*command,constchar*type);intpclose(FILE*stream);popen()函数通过创建一个管道,调用fork产生一个子进程,执行一个shell以运行命令来开启一个进......
  • 深度学习之激活函数
    激活函数的公式根据不同的函数类型而有所不同。以下是一些常见的激活函数及其数学公式:Sigmoid函数:公式:f(x)=特性:输出范围在0到1之间,常用于二分类问题,将输出转换为概率值。但存在梯度消失问题,尤其在输入值较大或较小时。Tanh函数(双曲正切函数):公式:f(x)=特性:输出范围在-1......
  • Nuxt3 的生命周期和钩子函数(七)
    title:Nuxt3的生命周期和钩子函数(七)date:2024/6/30updated:2024/6/30author:cmdragonexcerpt:摘要:文章阐述了Nuxt3中Nitro生命周期钩子的使用,如nitro:config自定义配置、nitro:init注册构建钩子、nitro:build:before/after调整构建设置及处理公共资产、prerender:rou......
  • 激活函数(1)笔记
    ReLU函数最受欢迎的激活函数是修正线性单元(Rectifiedlinearunit,ReLU),因为它实现简单,同时在各种预测任务中表现良好。ReLU提供了一种非常简单的非线性变换。#导入PyTorch库importtorch#从d2l库中导入与PyTorch相关的模块(这里假设d2l是一个外部库或教程中定义的......
  • java中的函数式接口:(Consumer、BiConsumer、Supplier、Predicate、Function、BiFunctio
    Consumer说明:(1)consumer接口来自java8中引入的Java.util.function包(2)Consumer是一个功能接口,用来作为lambda表达式或方法引用的任务目标(传递一个参数执行指定的方法)。功能:Consumer的功能接口是一个接受单一参数并且不返回任何结果的操作。必要时,"结果"可以存在在集合......
  • C++纯虚函数的理解,纯虚函数和派生类的关系。
    在C++中,纯虚函数(purevirtualfunction)是一种特殊的虚函数,它在基类中没有实现,只定义了一个接口,要求派生类必须提供具体实现。纯虚函数的定义方式在接口设计和多态性中非常有用。纯虚函数的定义和语法在C++中,纯虚函数的定义使用以下语法:classBase{public:virtual......
  • 使用不同函数打印torch.nn模型——print(model),named_children(),named_modules():
    创建模型创建一个具有三级嵌套的模型,结构如图:importtorchimporttorch.nnasnn#定义子子模块classSubSubModule(nn.Module):def__init__(self):super(SubSubModule,self).__init__()self.conv=nn.Conv2d(3,3,kernel_size=3,padding=1)......
  • 内存管理-9-内存常用函数和宏
    基于msm-5.41.页与页帧号转换//include/asm-generic/memory_model.h#definepfn_to_page(pfn)(vmemmap+(pfn))#definepage_to_pfn(page)(unsignedlong)((page)-vmemmap)注:使能了CONFIG_SPARSEMEM_VMEMMAP才使用的是这一组宏。vmemmap是一个structpage*类......
  • 嵌入式Linux系统编程 — 5.5 sleep、usleep和nanosleep系统休眠函数
    目录1为什么需要休眠2 sleep、usleep和nanosleep函数2.1sleep函数2.2 usleep函数2.3 nanosleep函数3示例程序1为什么需要休眠有时需要将进程暂停或休眠一段时间,进入休眠状态之后,程序将暂停运行,直到休眠结束。以下是一些常见的休眠场景和作用:避免过载:在高......
  • Azure Function App With Python 3.11
    有一段python代码,原来都跑在本地,既然functionapp可以运行python,还是比较新的python3.11,就想着直接用functionapp来跑了,省的进行sql逻辑改造,并且不吹不黑,python的pandas在处理dataframe上非常灵活。想法是好的,本地VSCODE搭起来python运行环境也很快,直接AZsignin就部署到自己......