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

一.心得总结

在上学期的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;

}

以上就是我对函数方面的总结。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值