函数部分总结

一,函数基本知识

  1.函数的定义
            思考题目时,应用函数要明确它的基本要素,根据函数的定义形式进行表示注意。( 形式参数表可以为空,但括号不可省
   2.函数原型声明

             为了使得主函数主干的清晰,在头文件后先将函数表示出来。(最后用分号结束,且注意主函数中不能实现具体功能)     3.函数调用

               主函数中应用到自定义函数就需要将函数调用。(形参必须是具有具体值,前面的形参数据类型要省略)                   4.形式结合

            主函数中调用自定义函数,是将主函数中的值形式赋值给自定形参。(主函数中的值与自定义函数没有任何关系,不会因为自定义函数的运行而改变值)

       
  5.函数的传值调用   ( 单向值传递)  
               void  swap (int a  int b)
                   int main()

                {  swap(a,b);}
                    a  ,b  的改变,a,b中存储的内容没有改变,就像是定义的任意字母一样,不会对函数的运算产生影响。                  6.函数的传引用(常用)
                    (类型名&引用名)=某变量
                         int &r=n ;(& r与n代表的同一变量,在主函数和自定义函数中均可以用)
                     注:在说明变量前面加&表示目标变量,在正常语句中用&表示取地址                                                                 7.  传地址调用

指针变量 :(指针)内容为地址的变量,所指变量为有效的内容为目标变量。

Eg : * (指针说明符) 变量名     int  *I -point ;

传地址的主要应用:

ü  赋值

Int I  ,* i-point ;

i-point=&I;     //  一个指针变量只能指向同一类型的变量所代表的地址,赋值时形式要相同

ü  定义时的赋初值

Int *i-point = & I;

*I-point =3;   // 在说明变量时前面加*表示指针变量,在正常变量中加*          表示指针内容的运算

ü  指针赋值运算

Int a,b;

Int *p,*q;    //确定指针变量,但是并未对其赋值,所以指针没有意义

P=&a; q=&b;  //将指针指向a,b的空间

*p=10;   *q=100;     //指针中的内容即a,b的内容被赋值

8.    指针变化运算

注意:该运算最好应用数组或数组地址的同种类型的综合应用。

ü  ++--

Int a[4] ;int *p=a ; p++;  //a数组中的a 是取全部数组,但一般表示首位,p++  的意思是在a[0]的基础上指针指向数组的下一位。

ü  +n(-n);

指针向上或向上移动数组n位;

ü  *a+1=2 ;

*++p=2;       

两者区别 : 第一个是指针一直指向数组首位a[0],只是数组a[0]的内容发生改变, 但第二个是指针的指向随着p的增加而改变,数组本身的内容没有改变

特别注意:如果a 表示是常数的表示字母,常量是无法重新赋值的。
                                                                                

例题实例:

传值调用    设计程序计算f (x) = x2 + 2x + 1  

 #include<bits/stdc++.h>

  int Fun(int x) ;                                                         
  int main( )
 {
  int a = 10, b;
    b = Fun(a);                              
   printf ("f(10)的值为:%d\n", b);                  
    return 0 ;                    
  }
                              
  int Fun(int x)                                   
  {
    int y ;
    y = x * x + 2 * x + 1 ;   
   return y ;                     
  }


求任意两个自然数的最大公约数
#include
int CommonFactor(int m, int n);               
                                                
int main( )
{
 int x, y, factor;            
 cin>>x,y;                          
 factor = CommonFactor(x, y);                
 cout<<factor<<endl;
      return 0;                    
}
                                        
int CommonFactor(int m, int n)           
int r, temp;if (m < n)                      
   {
  temp = m; m = n; n = temp;
 }
 r = m % n;
 while (r != 0)                       
     {
  m = n;                         
  n = r;
  r = m % n;
 }
 return n;
}
传引用的应用
求两个正整数的最大公约数
#include<bits/stdc++.h>
using namespace std;
int gc(int n,int m);
int swap(int &n,int &m);
int main()
{
    int n,m,c=0;
    cin>>n>>m;
    if(n<m)
     {swap(n,m);}
    c=gc(n,m);
    cout<<c;
    return 0;


}
int swap(int &n,int &m)
{
    int tmp;
    tmp=n;n=m;m=tmp;
}
int gc(int n,int m)
{
    if(m==0)  return n;
    else     return   gc(m,n%m);
}
       传地址应用
         输入a, b两个整数,按大小输出这两个数
       swap(int *p1, int *p2)
{  int  t;
    t=*p1;    *p1=*p2;   *p2=t;
}
int main( )
{   int  *point1, *point2, a,b;
    cin>>a>>b;
    point1=&a;  point2=&b;
    if (a<b)
          swap (point1, point2);       
    cout<<“a=“<<a<<“,b=”<<b<<endl;
    cout<<*point1<<“,”<<*point2<<endl;
}

 

                     

         


                  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值