您的位置 首页 java

C++学习笔记——调用函数

C++学习笔记——调用函数

1函数是什么

函数是程序的一部分,可对数据执行操作并返回一个值。每个c++至少有一个函数:main()

2声明与定义函数

编写函数代码前应该声明该函数,包括返回类型、函数名和形参列表

函数定义之前说过了,此处就略了。

例如:

intgetArea(intlength,intwidth);//函数声明

intgetArea(intlength,intwidth)

{

returnlength*width;

}//函数定义

3在函数中使用变量

局部变量与全局变量:

局部变量:函数内创建的变量为局部变量,函数返回后,其所有局部变量都不能供程序使用。

全局变量:在c++中,可在函数(包括main()函数)外定义c++变量,这种全局变量在程序的任何地方都可用。函数外定义的变量的作用域为全局,音词可在程序的任何函数中使用

我认为,只要是被代码块{}所包裹起来的变量都是局部变量,而在代码块之外定义的变量则是全局变量

程序清单5.3 Global.cpp

#include

voidconvert();

floatfahrenheit;

floatcelsius;

intmain()

{

std::cout<<“Please enter the temperature in Fahrenheit: “;

std::cin>>fahrenheit;

convert();

std::cout<<“\nHere’s the temperature in Celsius: “;

std::cout<

return0;

}

voidconvert()

{

celsius= ((fahrenheit-32)*5)/9;

}

4.从函数返回值

函数返回一个值或void。要从函数返回一个值,可使用关键字return,并在它后面指定要返回的值。这个值可以是字面量、变量或表达式,因为所有表达式都生成一个值。

程序清单5.4 LeapYear.cpp

#include

boolisLeapYear(intyear);

intmain()

{

intinput;

std::cout<<“Please enter a year: “;

std::cin>>input;

if (isLeapYear(input))

std::cout<

else

std::cout<

return0;

}

boolisLeapYear(intyear)

{

if (year%4==0)

{

if (year%100==0)

{

if (year%400==0)

returntrue;

else

returnfalse;

}

else

returntrue;

}

else

returnfalse;

}

5.默认函数形参

程序清单5.5 AreaCube.cpp

#include

intfindArea(intlength,intwidth=20,intheight=12);

intmain()

{

intlength=100;

intwidth=50;

intheight=2;

intarea;

area=findArea(length,width,height);

std::cout<<“First area: “<

area=findArea(length,width);

std::cout<<“second area: “<

area=findArea(length);

std::cout<<“Third area: “<

return0;

}

intfindArea(intlength,intwidth,intheight)

{

return (length*width*height);

}

6.函数重载

c++中,可以有多个同名函数,只要他们的形参不同即可,这称为函数重载,又称函数多态

多个重载版本的返回值可以相同,也可以不同,然而,不能通过修改返回类型来重载函数,相反,形参类型与形参数量必须不同

举例:

intaverage(int,int);

longaverage(long,long);

floataverage(float,float);//函数定义就不写了

调用函数average()时,只需传递合适的数据,就将调用相应的重载版本。

内联函数:

当定义函数时,c++编译器只在内存中创建一组指令,每当调用该函数时,都将跳转到这些指令,而函数返回时,将跳转到调用代码的下一行。如果程序调用了函数10次,每次都将跳转到同一组指令,即只有一个函数指令拷贝,而不是10个。跳转到函数和返回有一定的开销,如果函数包含的语句很少,就可以通过避免跳转来提高效率。在这种情况下,通过避免函数调用,程序的运行速度将更快。

声明c++函数时,如果使用了关键字inline,编译器将不会创建该函数,而将代码直接复制到调用它的地方,就像您在哪里输入了函数的语句一样。如果该内联函数被调用和10次,内联代码将总共复制10次,细微的速度改善可能因可执行程序的增大而抵消。

要将函数声明为内联的,可在函数原型中使用关键字inline。

inlineintdouble(int);

而不用修改函数本身:

intdouble(inttarget)

{

return2*target;

}

7.自动确定返回值类型

c++14新增的功能之一是,使用关键字auto让编译器自动推断函数的返回类型

程序清单5.6 AutoCube.cpp

#include

autofindArea(intlength,intwidth=20,intheight=12);\

autofindArea(intlength,intwidth,intheight)

{

return (length*width*height);

}

intmain()

{

intlength=100;

intwidth=50;

intheight=2;

intarea;

area=findArea(length,width,height);

std::cout<<“First area: “<

area=findArea(length,width);

std::cout<<“second area: “<

area=findArea(length);

std::cout<<“Third area: “<

return0;

}

有兴趣学习C/C++的小伙伴可以关注微信公众号:C语言爱好者

原文链接:

文章来源:智云一二三科技

文章标题:C++学习笔记——调用函数

文章地址:https://www.zhihuclub.com/183551.shtml

关于作者: 智云科技

热门文章

网站地图