作用域、全局局部变量、链接属性、存储属性、生存期、内部外部函数

1. 首先看函数的定义:

类型 函数名(形式参数)

{

代码块 //函数体就是代码块

}

函数名本身不属于任何代码块。

函数原型中声明参数 // 原型作用域。在原型中,参数的名字并非必须。如果出现,可以随便取任何名字,不必和形参、实参匹配。

函数定义的形式参数 //在函数体内部具有代码块作用域

函数调用的实际参数

2. 作用域(是对标识符而言,标识符:就是变量、函数、类型等的名字。它们有大小写字母、数字和下划线组成,但不能以数字开头。)

代码块作用域:任何在代码块的开始位置声明的标识符都具有代码块作用域,表示它们可以被这个代码块中的所有语句访问。(代码块:位于一对花括号之间的所有语句称为一个代码块。)

文件作用域:代码块之外(除了函数定义的形参)声明的标识符都具有文件作用域。

原型作用域:只适用于函数原型中声明的参数。

函数作用域:用于goto语句。我希望你永远不要用到这个知识,就是说它基本上不会用到。

3. 链接属性

环境:一个程序可有多个源文件组成,如果相同的标识符出现在几个不同的源文件中时,它们是像Pascal那样表示同一个实体?还是表示不同的实体?

标识符的链接属性决定如何处理在不同文件中出现的标识符。标识符的作用域与它的链接属性有关,但这两个属性并不相同。

链接属性有三种:

external(外部):属于external链接属性的标识符不论声明多少次、位于几个源文件都表示同一个实体。

internal(内部):属于internal链接属性的标识符在同一个源文件内的所有声明都指同一个实体,但位于不同源文件的多个声明则分属不同的实体。

none(无):没有链接属性的标识符(none)总是被当作单独个体,也就是说该标识符的多个声明被当作独立不同的实体。

时间: 2024-07-29 18:50:30

作用域、全局局部变量、链接属性、存储属性、生存期、内部外部函数的相关文章

局部变量 全局变量和存储属性

一.概述 1.局部变量 在函数内部定义,或者在结构体内定义.它的作用域仅仅限于本函数或本结构,生存期为开始创建(程序执行到定义的语句)到本函数结束.换句话说,在另一个函数中不能用本函数的变量,即使名相同也是如此. 2.全局变量 在函数外部定义.全局变量在编译时已经生成,到整个程序结束时才释放.在一个函数内对全局变量进行操作后的值是可以保留下来的,即可以在另一个函数中使用这个新的值.这可以用来实现多个参数的回传(return 只能返回一个值).但应注意,全局变量不能过多使用,否则会降低程序的清晰性

Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法) 3)都能使用扩展(extension)与协议(protocol) 4)类与结构体(枚举)中的全局属性/方法:在类中用class关键字,但在结构体中

【iOS】Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法) 3)都能使用扩展(extension)与协议(protocol) 类比结构体多的功能: 1)能继承 2)运行时能检查类对象的类型 3)析构释放资源

Swift存储属性

类是由属性和方法组成,属性一般是访问数据成员,在Object-C中,属性是为了访问封装后的数据成员而设计,属性本身不存储数据,数据是由数据成员存储的,而Swift中的属性分为存储属性和计算属性,存储属性就是Object-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回值 存储属性可以存储数据,分为常量属性和变量属性 存储属性适用于类和结构体两种面向对象结构类型,枚举属性没有存储属性 1.存储属性概念 class Employee{          let no:Int = 0  

javascript如何列出全局对象的非原生属性

研究一个网站前端技术的时候,了解它的全局的对象是一个好的入口, 一般来说,常见的库就会用外观模式,最后暴露一个对象给用户调用, 比如jQuery,requirejs,angular,react均是用这种方式. 如果没有用cmd/amd模块化或类似webpack工具打包的话,会给全局对象window添加一个属性,如angular: 如React 同时,为了避免全局污染,也要关注全局变量的个数和详情. How 可以通过ES5的新增api(Object.keys)看浏览器全局变量列表: Object.

javascript如何列出全局对象的非原生属性。

Why 研究一个网站前端技术的时候,了解它的全局的对象是一个好的入口,一般来说,常见的库就会用外观模式,最后暴露一个对象给用户调用,比如jQuery,requirejs,angular,react均是用这种方式. 如果没有用cmd/amd模块化或类似webpack工具打包的话,会给全局对象window添加一个属性,如angular: 如React 同时,为了避免全局污染,也要关注全局变量的个数和详情. How 可以通过ES5的新增api(Object.keys)看浏览器全局变量列表:Object

Swift 2.0学习笔记(Day 31)——存储属性

原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据. 存储属性可以存储数据,分为常量属性(用关键字let定义)和变量属性(用关键字var定义). 存储属性概念: 我们在前面曾用到过属性,Employee类和Department结构体.它们的类图如下,Employee 的部门属性dept与Department之间进行了关联. 我们可以在定义存储属性时指定默认值,示

Swift 2.0学习笔记(Day 38)——构造函数与存储属性初始化

原创文章,欢迎转载.转载请注明:关东升的博客 构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化.在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和height后,那么在定义他们时就不需要初始化了. Rectangle类代码如下: class Rectangle { var width: Double var height: Double init() { width = 0.0 height = 0.0 } } 如果存储属性在构造函数中没有初始化,

Swift研究之编程高级教程(二)属性,存储属性详解

 属性 属性是依赖于某个特定的类.结构体或者枚举类型的值.Swift有两种属性:存储类型和计算类型.其中存储类型可以作为实例的一部分存放变量或者常量的值,而计算类型的属性值是通过运算的来的.计算类型的属性可以在类.结构体和枚举类型中出现,但存储类型只可能出现在类和结构体类型中. 属性一般依赖于一个特定类型的实例,但是也可以依赖于类本身.依赖于类型本身的属性称为类型属性. 可以定义属性观察者来监督属性值的改变,从而作出响应.对集合不明白的看集合类型-数组详解 存储属性 常量属性let的值在初始