首页 > 编程语言 >c++函数

c++函数

时间:2023-02-04 11:00:26浏览次数:64  
标签:调用 return 函数 int float c++ cout


一,函数基础

1.函数一般用一个名字表示,即函数名。

返回类型,函数名,参数列表,和函数体构成了函数定义。

函数定义的语法形式

类型说明符   函数名(含类型说明的形式参数表)

{

 函数体

}

例一个求阶乘的函数:

int fact(int n)
{
int sum=1;
for(int j=2;j<=n;j++)
sum*=j;
return sum;
}

函数的声明:让计算机知道,我们自定义了一个函数,这就是函数的声明(Declare)。

声明表示该函数存在,而定义表示该函数怎么去运行,在调用函数之前,必须先声明函数

2.递归函数

直接或者间接调用自己的函数称为递归函数。

例如计算阶乘的函数也可这样写

int fact(int n)
{
if(n>1)
return n*fact(n-1)
return 1;
}

使用递归函数必须有一个终止条件,否则会陷入无限递归调用。

通常的调用方法是把递归放到if语句中。

二,参数传递

也就是调用方式

类型

说明

​传值调用​

该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。

​指针调用​

该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

​引用调用​

该方法把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

1.传值调用

#include<iostream>
using namespace std;
int Leo(int x,int y);//自定义函数求x,y乘积
int main()
{
int a,b;
cin>>a>>b;
cout<<Leo(a,b);//输出a*b
return 0;
}
int Leo(int x,int y)
{
return x*y;
}

 2.指针调用

#include<iostream>
using namespace std;
void Leo(int *x,int *y);//自定义函数交换x,y
int main()
{
int a,b;
cin>>a>>b;
Leo(&a,&b);//交换a,b
cout<<a<<endl<<b;//输出交换后的a,b
return 0;
}
void Leo(int *x,int *y)
{
int temp=*x;
*x=*y;
*y=temp;
}

 

3.引用调用

引用调用就像是给已声明的变量起一个“绰号”—引用名

变量数据类型 &引用名=已声明的变量名;

#include<iostream>
Using namespace std;
void swap(int &x,int &y);//自定义交换函数
Int main()
{
int a=2,b=3;
swap(a,b);
cout<<a<<endl;//交换后 输出3
cout<<b<<endl;//交换后 输出2
return 0;
}
void swap(int &x,int &y)//对x,y操作,就是对 a,b 操作 x,y是 a,b 的 “绰号”
{
int temp;
temp=x;
x=y;
y=temp;
}

三,函数重载

函数重载的本质就是多个函数共用同一个函数名

#include<iostream>
using namespace std;
int myabs(int a);//自定义求绝对值函数
float myabs(float a);
double myabs(double a);
int main()
{
int a=-1,b=2;
float c=-2.2f,d=3.9f;
double e=-3e-9,f=3e6;
cout<<"a="<<myabs(a)<<endl;
cout<<"b="<<myabs(b)<<endl;
cout<<"c="<<myabs(c)<<endl;
cout<<"d="<<myabs(d)<<endl;
cout<<"e="<<myabs(e)<<endl;
cout<<"f="<<myabs(f)<<endl;
return 0;
}
int myabs(int a){
cout<<"int abs"<<endl;
return (a>=0?a:-a);//如果a>=0 则返回a 否则返回-a
}
float myabs(float a){
cout<<"float abs"<<endl;
return (a>=0?a:-a);//如果a>=0 则返回a 否则返回-a
}
double myabs(double a){
cout<<"double abs"<<endl;
return (a>=0?a:-a);//如果a>=0 则返回a 否则返回-a
}

输出结果

int abs
a=1
int abs
b=2
float abs
c=2.2
float abs
d=3.9
double abs
e=3e-009
double abs
f=3e+006

 

重载函数就来解决 名字相同,功能类似,参数不一样的函数,系统会自动识别,这一点不需要我们来考虑。

标签:调用,return,函数,int,float,c++,cout
From: https://blog.51cto.com/u_15952369/6036939

相关文章

  • c++中类模板遇到的 不知道怎么解决
    提问:   指定name类型为string填写string的字符串报错啥原因不清楚但报错现实填入的是一个char数组也不知道啥原因解答: 参考代码:template<typenameNameT......
  • 模拟实现不受限制的字符串函数--C语言版
    C语言中提供了许多十分好用的库函数,一旦我们掌握了它们,我们使用C语言写代码就会变得更加得心应手。1.strlenstrlen函数就是计算字符串的长度的,它会一直读取到\0,它的返回值就......
  • C++面试八股文快问快答のSTL篇
    文章目录​​STL篇​​​​vector的底层原理(此题本人踩坑,需重视)​​​​vector中的reserve和resize的区别​​​​vector中的size和capacity的区别​​​​vector中erase方......
  • 【c/c++】isdigit()函数
    isdigit函数isdigit是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符。函数定义:​​intisdigit(intc)​​​函数说明:​​检查参数是否为十进制......
  • C++
    t[i]=s[j];i++;j++;注意与自增运算符的前缀形式区别,如果是:t[++i]=s[++j];则等价于:i++;j++;t[i]=s[j];贴一段课本上的介绍:1.++i:表示在引用变量i之......
  • 「 C++ 11」std::thread “invalid use of non-static member function“问题处理
    文章目录​​......
  • #yyds干货盘点#再聊JS函数柯里化
    一、定义:柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。通过一个简单的例子......
  • Jmeter-重要的函数
     ${__counter(,)}计数器-加1的功能疑问:假如加2,使用计数器    -计数器超过最大值后重新开始计数重点:最大值,如果运行结果超过最大值时,又会从起始值开始循环每个......
  • c++学习3 转义字符
    一“/”和某些字符的结合,产生新的字符就叫转义字符。'\0'==ASCII码值的“0”。'\n'==换行符。'\t'==tab缩进符。'\a'==发出警报。'\r'==回到行首符号。 二八进制......
  • C++ Primer 5th 阅读笔记:前言
    机器效率和编程效率Itsfocus,andthatofitsprogrammingcommunity,haswidenedfromlookingmostlyatmachineefficiencytodevotingmoreattentiontoprogram......