您的位置:首页 > 编程语言 > C语言/C++

c++学习总结(一)---函数

2018-03-23 20:41 253 查看
一.心得总结
在上学期的c语言的学习中,我初次接触了编程,感觉比较新奇也比较有挑战性,从一开始什么都不会,到慢慢可以写程序,心中慢慢积累起成就感。在上学期编程中解决一道难题,虽然很好,但代码很长,有些语句反复使用,但却没有方法找到简单的方法。老师说过写出好程序才是一个程序员该做的。而这一学期学的函数,便可以起到简化代码的功能,使用可以使冗长的代码缩短,而且还可以缩短运行时间。在解决简单的题目时,可能感觉不到代码缩短过程序变得简单,但当遇到十分复杂的题目时,函数的功能便可以完全展现出来了。因此用好函数,是接下来阶段学习c++及更多语言的重要任务,我也因此要求自己反复琢磨函数的正确用法。下学期的课程都十分难,在刚开学这几周的学习,就可以完全感受到,而越难的题目就越应该用好函数。接下来简单介绍总结一下函数。

二、内容总结
1.函数定义的一般形式为:
      ↙返回值类型             ↙形参表可以为空,但括号不能省略
类型标识符 函数名(形参表)  ←  函数首部
{
    语句                                   ←函数体,可以为空,但花括号不能省略

}没有分号
2.形参与实参
    类似于局部变量,函数的形参为函数提供了已命名的局部储存空间。他们之间的差别在于形参是在函数的形参表中定义的,并由调用函数时传递函数的实参初始化。

    实参则是一个表达式。它可以是变量或字面值常量,甚至是包含一个或几个操作符的表达式。在调用函数时所传递的实参个数必须与函数的形参个数完全相同。与初始化式的类型必须与初始化对象的类型匹配一样,实参的类型也必须与其对应形参的类型完全匹配:实参必须具有与形参类型相同,或者能隐式转换为形参类型的数据类型。

3.函数返回类型
    函数的返回类型可以是内置类型(如 int 或者 double )、类类型或复合类型(如 int& 或 string*),还可以是void类型,表示该函数不返回任何值,bool类型,表示判断。

4.引用
类型名&引用名=某变量名;
某个变量的引用,和这个变量是一回事,相当于该变量的一个别名
int n=4;                                定义引用时一定要将其初始化成引用某个变量,不初始化编译不过
int &r=n;
r=4;
cout<<r;//输出4;
cout<<n;//输出4;
n=5;                                    引用只能引用变量,不能引用常量和表达式
cout<<r;//输出5;
5.指针变量
<1>其内容为地址(储存位置)的变量,简称指针。它所指向的地址上存放的变量称作目标变量。
形式:类型标识符   *变量名
int *i-point,*j-point;
<2>指针变量同也可以赋值:
int i,*-point;
i-point=&i;
也可以在定义指针变量时赋初值:
int i;
int *i-point=&i;//取地址运算;
*i-point=3;//取内容运算;
<3>一个指针变量只能指向同一类型的变量。即整型指针变量只能指向整型数据的地址,而不能放其它类型数据的地址。绝对不能对未赋值的指针变量作“取内容”运算。
int main()
{int a,b;
int *p1,*p2;
*p1=10;*p2=100;
cout<<a<<'\t'<<b<<endl;
cout<<*p1<<'\t'<<*p2<<endl;//p1,p2为随机值,应在“取内容”前加上p1=&a;p2=&b;
}
<4>指针的运算
++(--):指向下一个(或上一个)同种类型的数据
-int a[4];int *p=a;p++;
-int b=2;int *q=&b;p--;
+n(-n)
-int a[4];int *p=a;p+=2;
-int b=2;int *q=&b;p-=2;
<5>指针变量作为函数参数:
函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。指针变量作为函数参数与变量本身作函数参数不同,变量作函数参数传递的是具体指,二指针作函数传递的是内存的地址。
<6>数组与指针
int a[10],*p;
p=&a[0];//数组第一个元素的地址
p=a;//直接用数组名赋值,p是变量,a是常量
若数组元素为int型,则指向其的指针变量也应定义为int型。
int a[10];
int *p=a; int *p=&a[0];//这两种情况均为赋初值;
通过指针引用数组元素
int a[10];
int *p=a;//为指针变量赋初值;
*p=1;//通过指针变量为数组元素赋值;
*(p+1)=2;a[1]=2;//p+1指向数组的下一个元素,而不是下一个字节;
三、常见题型
1.用传址调用来实现swap:
#include<iostream>
using namespace std;
void swap(int &a,int &b)//定义swap()函数,形参是传址调用
{int tmp=a;a=b;b=tmp;
}
int main()
{int c=1,d=2;
swap(c,d);//交换变量
cout<<c<<‘'d<<endl;
return 0;
}//程序输出为:2 1
2.求任意两个自然数的最大公约数
#include<iostream>
int gys(int m,int n);
int main()
{int x,y,ys;
cin>>x>>y;
ys=gys(x,y);
cout<<ys<<endl;
return 0;
}
int gys(int m,int n)
{int r,t)
if(m<n)
 {t=m;m=n;n=t;

  }

r=m%n;
while(r!=0)
{m=n;n=r;r=m%n;}
return n;
}
3.判断一个素数的函数,输入一个数,判断它是否是素数,是输出yes,不是输出no
#include<cstdio>
#include<cmath>
int ss(int x);
int main()
{int n;
cin>>n;
if(ss(n))cout<<"yes";
else
cout<<"no";
return 0;
}
int ss(int x)
{int j;
if(x=2)return 1;
j=2;
while(j<=sqrt(x)&&x%j!=0)j++;
if(x%j==0)
return 0;
else
return 1;
}
以上就是我对函数方面的总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: