函数是一个非常实用的程序设计技巧,通过这段时间的学习,了解到很多有关于函数的知识。
一.函数知识点:
1.函数调用的一般形式为:
函数名(实际参数列表) 实际参数列表是函数入口参数的实际值。
2.数据类型 函数名(形式参数表)
{ 函数体//执行语句}
①其中返回值类型为数据类型;
②形式参数可以是空的,也可以有多个,但必须有括号;
3.函数返回值类型 函数体中由 return 语句返回的值的类型。没有返回值其类型为void
4.return 语句形式:
return 表达式
或 return (表达式 )
作用:
① 返回函数值
②不再执行后续语句,程序控制返回调用
③一个函数体内可以有多个return 语句
④表达式 返回值的类型与函数类型不相同时,自动强制转换成函数的类型
5.实际参数表与形式参数必须在个数、类型、位置一一对应
6. 函数原型
作用是告诉编译器有关函数的信息:
①函数的名字
②函数返回的数据类型
③函数要接受的参数个数、参数类型和参数的顺序
7.传值参数
①调用函数时,实参表达式的值被复制到相应形参标识的对象中,并按形参类型强制转换
②函数返回时,形参对象被撤消,不影响实参的值
③函数内对形参的访问、修改,都在形参的标识对象进行
④值传送的实参可以是常量、有确定值的变量或表达式
⑤函数返回值通过匿名对象传递
8.实参可以是常量、变量,还可以是表达式,如果实参中存在变量,则在函数调用时,变量应该是“有确定值的”;
9.引用:“”
①类型名 & 引用名 = 某变量名;
②某个变量的引用,和这个变量是一回事,相当于该变量的一个别名
③定义引用时一定要将其初始化成引用某个变量,不初始化编译不过
④引用只能引用变量,不能引用常量和表达式
10.指针变量:
①其内容为地址(存储位置) 的变量,简称指针。它所指向的地址上存放的变量称作目标变量
②定义的一般形式为:类型标识符 *变量名
④一个指针变量只能指向同一类型的变量。即整型指针变量只能指向整型数据的地址,而不能放其它类型数据的地址
⑤指针变量同样也可以赋值,也可以在定义指针变量时赋初值
⑥但绝对不能对未赋值的指针变量作“取内容”运算
⑦函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中
⑧指针变量作为函数参数与变量本身作函数参数不同,变量作函数参数传递的是具体值,而指针作函数参数传递的是内存的地址
⑨用指针变量作函数参数,在被调函数的执行过程中,应使指针变量所指向的参数值发生变化,这样,函数在调用结束后,其变化值才能保留回主调函数
⑩函数调用不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值;用指针变量作函数参数,可以得到多个变化了的值
11.按值传递:
①过程:
首先计算出实参表达式的值,
接着给对应的形参变量分配一个存储空间;
然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用
②被调用函数本身不对实参进行操,!即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值
12.地址传递;
①如果在函数定义时将形参说明成指针,调用函数时就需要指定地址值形式的实参。这时的参数传递方式就是按地址传递方式
②按地址传递与按值传递的不同在于:形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参
13.引用传递
①如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”
14.数组:
①数组与变量一样,在内存中占据单元,有地址,一样可以用指针来表示
②数组名就是数组的起始地址;又规定:数组的指针就是数组的起始地址。数组元素的指针就是数组元素的地址
③用指针变量作函数参数(形参)接收数组地址(实参)
④数组名代表数组首元素的地址
用数组名作函数的参数,传递的是数组首元素的地址。用指针变量作函数形参,同样可以接收从实参传递来的数组首元素的地址(此时,实参是数组名)
二.题型
openjudge第一题:
输入1个整数n。从小到大依次输出n的所有因子。升序输出n的所有因子,中间用空格隔开;之后再输出因子总个数。
答案:
#include<bits/stdc++.h>
using namespace std;
int yin(int m,int n)
{
if (m%n==0)
return 1;
else return 0;
}
int main()
{
int m,a[1000],t=0;
cin>>m;
for (int i=2;i<=sqrt(m);i++)
if (yin(m,i))
{
a[t]=i;
a[t+1]=m/i;
t=t+2;
}
sort(a,a+t);
for (int i=0;i<=t-1;i++)
cout<<a[i]<<" ";
cout<<t;
return 0;
}
三.心得
通过这段时间学习函数,我对C++又有了更深刻的认识,了解到了一个新的知识,掌握了一种新的程序设计方法,编程能力有了新的提高,了解了以后程序设计的思路。但同时也发现了自己需要努力的方向和方式。虽然对函数的基本基本设计能力和编程方法有了一定的掌握,但对函数的递归部分仍有许多未掌握和不理解的部分,仍需要对递归部分分出更多的努力。同时也发现自己在编程方面仍有许多不熟练和未掌握的部分,对一些编程语句的含义不能很好的理解,在这些方面仍须努力。同时学习并掌握了函数的调用和使用方法,像是函数的三种调用方式,以及函数在编程时所需要的定义方法,以及函数值的传递和函数的返回值,同时也学习到了函数在程序中的应用,怎样将一个程序精简,分成多个部分,或者将一个函数运用到多个部分,通过这种方式来缩短函数长度,同时使程序更有条理性,更加益于检查错误,使编程更加易懂,同时也为自己后期的检查工作创造更加有利的条件,提高自己的编程速度,提高效率。