关于函数的学习总结

1,函数 定义形式:
函数返回值类型  函数名(形参列表)
{
    函数体;
    return 返回值;
}

    1》:函数返回值类型:即一个数据类型,可以为int,float,double,char,bool等等,需注意,当函数返回值类型为void时,函数没有返回值。

    2》:函数名称,命名规则同变量名命名规则,是自定义的,尽量取有意义的函数名称。例,求最大值的函数可以命名为max, 起搜索作用的函数可以命名为search,,等等。因为当一个程序较大时,各个函数如果只是简单的a,b,c,会很容易混淆。

    3》:形参列表,可以将其简单理解为函数 f(x)=a*x^2+b*x+c(a,b,c为常数),中的x,  既然为列表,则可以有多个传入值,既可以理解为f(x,y,z)=a*x+b*y+c*z+d(a,b,c,d为常数)中的“x,y,z”;当然个数没有限制,亦可以没有传入值,此时可以通过对全局变量的操作来实现函数的功能。具体用法为(数据类型 变量名,数据类型 变量名,数据类型 变量名)。

    4》:函数体,即对形式参数或全局变量进行操作的一段代码。

    5》:返回值,一个函数可以有多个return ,但最多只有一个返回值。

2,函数的调用

    函数的调用很简单:函数名(参数1,参数2);

    注意:1-传递的参数一定要与定义时的形参列表中的数据类型一一对应。

              2-调用完函数之后要加引号以示语句结束。

3,函数的参数传递方式:

以一个交换变量值的小程序打头:

 
#include<bits/stdc++.h>
using namespace std;
int main()
{
   int a,b;
   cin>>a>>b;
   cout<<"a="<<a<<"  b="<<b<<endl;
   int c;//红色为交换过程
   c=a;
   a=b;
   b=c;
   cout<<"a="<<a<<"  b="<<b<<endl;
   return 0;
}

    1》:按值传递

#include<bits/stdc++.h>
using namespace std;
void swap(int a.int b)
{
    int c;
    c=a;
    a=b;
    b=c;
    return ;
}
int main()
{
   int a,b;
   cin>>a>>b;
   cout<<"a="<<a<<"  b="<<b<<endl;
   swap(a,b);
   cout<<"a="<<a<<"  b="<<b<<endl;
   return 0;
}

将不能交换,因为被调用函数本身不对实参进行操作!即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。

但可以在swap函数内输出,

    2》:按址传递:

#include<bits/stdc++.h>
using namespace std;
void swap(int* pa.int* pb)
{
    int pc;
    pc=*pa;
    *pa=*pb;
    *pb=pc;
    return ;
}
int main()
{
   int a,b;
   cin>>a>>b;
   cout<<"a="<<a<<"  b="<<b<<endl;
   swap(&a,&b);
   cout<<"a="<<a<<"  b="<<b<<endl;
   return 0;
}

将能够实现,不过涉及到指针变量的内容,容易出错。

    简单了解一下指针:

    (1):定义指针变量:变量类型* 变量名。其中变量类型为指针所指的变量的类型;例:int* pa;

    (2):取地址运算:&a;将得到变量a的地址;

    (3):取内容运算:*pa;将得到 pa内的所存地址内的内容;

3》:引用传递:

#include<bits/stdc++.h>
using namespace std;
void swap(int  &a.int &pb)
{
    int c;
    c=a;
    a=b;
    b=c;
    return ;
}
int main()
{
   int a,b;
   cin>>a>>b;
   cout<<"a="<<a<<"  b="<<b<<endl;
   swap(a,b);
   cout<<"a="<<a<<"  b="<<b<<endl;
   return 0;
}
4,其他的函数的传递数据

    1-传递一个数组

        1》:定义时的格式为:返回值类型 函数名(数组数据类型,自定义数组名[ ] )

                 调用时的格式为:函数名(数组名);

        2》:也可以将数组定为全局变量,直接用函数对其进行操作。

        3》:亦可以用指针来传递一个数组,

  例:          
int main( )
{  int  a [10],*p;
    p=a;//a 即为数组a的首地址,所以不用取址符
    ......
    f(p, 10);
    .....
}
f(int x[ ], int n )
 {
        ......
 }
PS:值得一提的是,对于一个指向数组的指针,当指针加一时, 其指向的地址是该数组数据类型大小的下一个地址,即当int指针指向数组a[0]时,p+1就指向a[1]的地址。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值