oc函数

来源:互联网 发布:下载zoom软件 编辑:程序博客网 时间:2024/05/19 13:10

函数是一种非常好用的结构,它可以重复使用,简化代码,提高代码的效率,

1、函数调用在函数定义之后,可以直接定义函数;如果函数调用在函数定义之前,或调用的函数在另一个源文件中,就需要声明函数;

2、主函数调用函数是传递的是实参的副本,函数用形参接收实际上是对新生成的变量(形参)进行了初始化赋值,所以,形参的改变不影响实参;

3、递归函数:即调用该函数本身的函数;

递归函数就像一个循环一样,在不停的调用自己,它在某个时刻的返回值必须是确定的,就像是循环的终止条件,终止该函数。

4、调用函数时传递数组元素,视为该数组类型对应的变量,形参类型为对应类型的普通变量。如果传递的是数组名,就相当于传过去的是该数组的地址,要用指针类型变量接收;

5、外部函数:能被其他源文件调用的函数。定义时用extern标记或不加任何修饰;

     内部函数(又称静态函数):只能在当前文件使用。用static修饰。

静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。

调用外部函数时先声明再使用,编译多个文件。

6、全局变量:定义在函数内部,只在函数内部起作用,函数执行完自动释放。可分为形参、函数局部变量、代码块局部变量。

全局变量:在整个函数起作用,当整个程序运行完后才释放。全局变量的值可以被任意函数修改。

7、外部全局变量:可以被其他源文件使用的全局变量。使用外部全局变量时先声明后使用,形式:  extern 类型   变量名;

     内部全局变量:只能被当前文件使用的全局变量,前面用static修饰。

8、静态存储:在程序开始运行就分配内存空间,直到程序结束才释放。所有的全局变量和有static修饰的局部变量都是静态存储(没有指定的情况下);

     动态存储:在程序运行期间根据需要分配内存空间,使用完后自动释放,可以多次分配、释放。函数形参,没有static修饰的局部变量,函数执行完的结果以及返回地址等。(没有指定的情况下)

为了指定变量存储类别,oc支持下面几种存储类别:

auto:指定变量为动态存储机制,局部变量默认为这种粗出机制;

static: 指定局部变量存放到静态存储区;

register:指定变量放到寄存器中。调用寄存器中的变量非常快,但是寄存器的个数有限,一般为1到2个;

extern:声明外部变量;


函数这一部分中,出现频率最多的貌似是static,它既可以修饰变量又可以修饰函数,感觉威力好大,其实static只有两个作用:

1、隐藏功能:static修饰的函数和全局变量只能在当前文件中使用,在其他文件中会被隐藏起来;

2、保持持久性:static修饰的静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。

0 0
原创粉丝点击