美文网首页
C语言特性(函数)

C语言特性(函数)

作者: JackLu经纬 | 来源:发表于2015-12-22 15:16 被阅读0次

函数

定义函数

语法格式如下:
函数返回值类型 函数名(形参列表){
    //由零条到多条可执行性语言组成的函数
}

函数声明

在如下两种情况下,函数需要先声明,再调用
1.函数定义处于调用的函数后面。
2.函数定义在另一个源文件中。
函数声明有两种形式
1.只声明函数的返回值类型、函数名、形参列表的形参类型,不保留形参名。
2.声明函数的返回值类型、函数名、完整的形参列表,包括形参名。
```
##函数的参数传递机制
```
    Objective-C里函数的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传
入函数内,而参数本身不会受到任何影响。
```
##递归函数
```
定义:一个函数体内调用它自身时,被称之为函数递归。函数递归包含一种隐式循环,它会重复执行某段代码,但
这种重复执行无须循环控制。
例:
int fn(int fn){
  if (n == 0){
    return 1;  
  }else if(n == 1){
    return 4;
  }else{
    //函数中调用它自身,就是函数递归
    return 2 * fn(n - 1) + fn(n - 2);
  }
}
    函数递归是非常有用的,例如希望遍历某个路径下得所有文件,但这个路径下文件夹的深度是未知的,那么就
可以使用递归来实现这个需求。
```
##数组作为函数参数
```
除了使用数组元素作为参数外,C语言也允许将数组变量(本质上就是一个指针)传入函数,当使用数组变量本身作
为参数时,有如下几点需要注意。
1.声明函数时必须指定数组类型的形参,此时数组类型的形参既可指定长度,也可不指定长度。如果声明函数时形
参是多维数组,则只有最左边的维数可以省略。
2.当数组作为函数的形参时,声明函数的形参类型与调用函数时传入的实参类型必须保持一致。
注:与传入普通变量不同的是,传入数组变量作为参数的实质就是传入一个指针——该指针指向数组的首地址,因此
函数中改变数组元素会对数组本身有影响。
```
##内部函数与外部函数
```
    函数本质上是全局性的,因为一个函数总可以被其他函数所调用,但根据函数是否可以被其他源文件所调用,
可以将函数分为内部函数和外部函数。
    内部函数:定义函数时使用static修饰,该函数只能被当前源文件中的其他函数所调用,这种函数被称之为
内部函数。
    外部函数:定义函数时使用extern修饰,或者不使用任何修饰符。它可以被任何源文件中的函数调用,这种
函数被称之为外部函数。
```

相关文章

  • C语言特性(函数)

    函数 定义函数 函数声明

  • C++ 面向对象

    C++ 与 C语言 区别 C++ 面向对象、标准特性; C 面向过程,函数+结构体 C++可以运行C语言,反之就不...

  • 高质量C++编程指南 ----C++函数的高级特性

    8. C++函数的高级特性 对比于C 语言的函数,C++增加了重载(overloaded)、内联(inline)、...

  • C与C++的差异

    相对于c语言,c++语言增加的主要特性包括类、重载、派生、虚函数、模板以及异常处理。 但在进一步讨论这些新特性之前...

  • 通过汇编看golang函数的多返回值

    golang这门语言,有个比较好的特性,就是支持函数的多返回值。想C,C++,Java等这些语言,是不支持函数多返...

  • 面试常见问题01 - C++相关(施工ing)

    目录 一. C、C++的区别和优缺点二. C++的语言特性三. 多种关键字的作用和用法四. 内联函数五. 虚函数六...

  • C语言特性(函数与指针)

    函数与指针 用函数指针变量调用函数 当定义函数之后,C语言允许定义一个指针变量来指向该函数,接下来就可通过该指针变...

  • OC(C语言特性函数,指针)

    一.函数 1.如果声明函数时指定的返回值类型与return语句实际返回的数据类型不匹配,那么此时将以声明函数时指定...

  • 对函数的拓展

    相比C语言,C++的函数功能多了很多特性,使用起来也更加方便。 一、函数重用 在使用逻辑相同但是传入参数不同时不必...

  • Block

    简介(introduction)   Block对象是C语言级别的语法和运行时特性。它们是类似于标准C的函数,但是...

网友评论

      本文标题:C语言特性(函数)

      本文链接:https://www.haomeiwen.com/subject/onmmhttx.html