• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > 全局变量、局部变量、const、static、extern

全局变量、局部变量、const、static、extern

作者:Coding_Kid的博客 字体:[增加 减小] 来源:互联网 时间:2017-09-04

Coding_Kid的博客通过本文主要向大家介绍了全局变量,局部变量,const等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
类里方法外、类外直接写NSString * str = @“xxx”;  str是全局变量(面向对象中,要使用全局变量,一般设置成类的属性)

局部变量:

写在类里方法内的变量是局部变量。

注意:

    const、static、extern只是三个变量修饰符
    const决定变量能不能被改变
    static可以决定变量的生命周期
    extern可以想不到什么用处的跨文件传值?…

至于变量的作用域,跟它们没关系,只能变量定义的地方有关。

const常量(只读)

(当不希望别人修改这个变量值的时候用,写在pch中可以起到宏的作用)
位置可以随便写

const作用

1. 用于修饰右边变量(基本变量,指针变量)
2. 被const修饰变量只读

const与宏的区别

1. 编译的时刻不一样: 宏:预编译 const:编译
2. 编译检查:宏不会做编译检查 const会
3. 宏的好处:宏可以定义函数和方法 const不可以
4. 宏坏处:大量使用宏,会导致预编译时间过长

常量指针与指针常量的区分:

看指针*号 与 const 的先后顺序
    const在*号前面,表示里面存的是常量值,const int * a = &b;  可以直接改b的值,但是不能通过*a改,编译器认为a里是个常量
    *号在const前面,表示这个创建的指针变量不能再被赋值,int * const a = &b,a不能再赋值其他的地址

相关题目

 int * const p1; // p1:只读  *p1:变量
 (const int) / (int const) *p2; // p2:变量 *p2:只读   
 (const int) / (int const) * const p4; // p4:只读 *p4:只读
iOS中const的位置

const在iOS中修饰字符串,const的位置在哪都无所谓的,因为重新赋值都会报错

原因,比如:
    const NSString * str = @“ss”;   /    NSString * const str = @“ss”;
    如果再赋值 str =   @“string”,都会报错
    因为 str  = @“string” 本质上干了两件事:
        1.将str的内存地址改成@“string”的地址   
        2. 将str内存中存的值改为string
所以不管const位置在那,重新赋值都有问题。

生命周期

存在常量数据区,与应用程序生命周期相同

const在开发当中的使用

1.  const替换宏,宏:常用字符串或者基本数据定义成宏 -> const
2.  修饰方法参数,让方法参数只读

static(提升生命周期):

如果有时候希望类里某个变量拥有整个app运行期间一般长的声明周期时,控制器销毁,变量依旧存在的时候,用这个修饰)

作用域(不会改变变量作用域):

修饰局部变量,只要被static修饰局部变量,这个局部变量的声明周期就会延长(整个app运行过程中都在),作用域不变

修饰全局变量,只要被static修饰全局变量,这个全局变量只能在当前文件下使用

分配时刻:

程序一运行的时候就会分配内存

生命周期:

程序运行期间一直存在

static修饰的变量,只是在编译的时候进行初始化赋值,运行的时候就不会再运行这句代码。

注意点:

    在c99中指明全局变量和static变量的初始化式必须为常量表达式

    static NSArray * array  = @[] / [NSArray array]  错误: initializer element is not a compile-time constant

    只能:
        static NSArray * array; 
        其他地方赋值

    static NSString * str = @“”  这个是可以的,NSString总是特殊

extern(跨文件使用)

extern修饰的变量,名字全局内不能相同,否则报错:变量重定义)

使用方式(跨文件使用):

    A类有个属性:int a  = 8;   //  类外,类内:方法外。
B类中想要使用:extern  int  a ;   // 位置随便,类外,类内:方法内,方法外

这个时候A中的值,B就能获取,而且还能修改。一旦修改之后,A文件中a的值也变了

作用域

全局作用域(只需要在一个源文件中定义,就可以作用于所有的源文件)

生命周期

程序运行期间一直存在

static和const联合使用

static const NSString * reuseId = @“reuseId”;   // 在当前文件内可用的只读变量

开发中是如何避免重复定义?

做法:只要定义全局变量,都不能再自己的类中定义,一般开发中,我们会搞一个公共的const文件来定义全局变量
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 微信小程序 开发之全局配置
  • javascript 的变量、作用域和内存问题
  • nodejs中全局变量的实例解析
  • js中开关变量使用实例
  • 微信小程序本作用域下调用全局JS详解及实例
  • javascript 显示全局变量与隐式全局变量的区别
  • JavaScript定义全局对象的方法示例
  • 全局变量、局部变量、const、static、extern

相关文章

  • 2017-05-11JavaScript基本类型值-Number类型
  • 2017-05-11node.js基于mongodb的搜索分页示例
  • 2017-05-11JavaScript省市级联下拉菜单实例
  • 2017-05-11详解ECMAScript6入门--Class对象
  • 2017-05-11微信小程序 聊天室简单实现
  • 2017-05-11js实现文字无缝向上滚动
  • 2017-05-11js时间戳和c#时间戳互转方法(推荐)
  • 2017-05-11Javascript中字符串相关常用的使用方法总结
  • 2017-05-11基于javascript实现最简单选项卡切换
  • 2017-05-11初识NodeJS服务端开发入门(Express+MySQL)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • NodeJS遍历文件生产文件列表功能示例
    • JavaScript中无法通过div.style.left获取值的解决方法
    • 微信小程序通过api接口将json数据展现到小程序示例
    • angularjs实现的前端分页控件示例
    • jQuery Ajax实现跨域请求
    • jquery中绑定事件的异同
    • Bootstarp基本模版学习教程
    • jQuery插件MovingBoxes实现左右滑动中间放大图片效果
    • js获取ip和地区
    • 使用WebGL + Three.js制作动画场景

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有