const,static,extern详解

原创 2015年11月18日 14:50:20

一、const详解

*如果试图修改由const修饰符修饰所声明的变量,编译器会报错。*

const修饰符修饰的指针:

  1. const int *p 和 int const *p
    指针p的指向可以改变,但p指向的内容不可以改变。
      const int  *a;
        int b;
        a = &b;
        *a = 100;//(编译报错)
  1. int *const p;
    指针p的指向不可以改变,但p指向的内容可以改变。
        int *const a;
        int b;
        a = &b;//(编译报错)
        *a = 100;
  1. const int *const p;
    指针p的指向不可以改变,p指向的内容也不可以改变。
        int b = 100;
        const int *const a;
        a = &b; //(编译报错)
        *a = 100;//(编译报错)

结论:const修饰的不能改变。

二、static

static修饰符修饰的变量意味着该变量仅在定义此变量的编译单元(oc中的.m文件)内可见。假如声明变量时不加static,编译器会为它创建一个“外部符号”(external symbol),如果两个编译单元内拥有同名的变量,编译器会抛出一条错误信息。实际上,如果一个变量同时声明为static const,编译器根本不会创建符号,此时会跟#define预处理命令一样。

在实现文件使用static const 来定义只在编译单元内可见的常量。(未在全局符号表中)

三、extern

如果要公开某个常量、声明一个外界可见的常值变量。此类常量需要防止“全局符号表”(global symbol table)。
定义方式: 常量在头文件中声明,在实现文件里定义。

//header file
extern NSString *const externValue;
//implementation file
NSString *const externValue = @"VALUE";

在头文件中使用extern 声明全局常量,并且在相关实现文件中定义其值。(全局符号表中)

版权声明:本文为博主原创文章,未经博主允许不得转载。

CONST,STATIC,EXTERN用法总结!

最近看许多公司笔试都考这几方面的内容,于是乎就搜索了一下,把这几个知识点总结以下,以增强基础,以及应付未来的笔试++++++++++++++++++++++++++++++++++++++++++++...
  • adriano119
  • adriano119
  • 2008年09月28日 11:13
  • 5506

const,static,extern 的理解

static 修饰局部变量 让局部变量只初始化一次局部变量在程序中只有一份内存并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) 修饰全局变量 ...
  • chen_gp_x
  • chen_gp_x
  • 2016年11月13日 16:27
  • 21542

static extern const 静态全局变量与全局变量的区别

static:和extern是用来设置作用域的 const:设置变量只可以被读,不可以被修改static:用static修饰的变量,在其所限定的作用域中只会有一分内存1:在一个函数内部:说明是一个静...
  • li15809284891
  • li15809284891
  • 2017年02月08日 09:54
  • 1510

static const extern在C与C++中的区别

C中const的用法: 1, 在定义变量时使用(由于const常量在定义后不能被修改,所以在定义时一定要进行初始化操作): a)  最简单的用法,说明变量为一个常变量(在以下例子里,int 和co...
  • CC285494320
  • CC285494320
  • 2016年06月02日 18:40
  • 441

const、static、extern、volatile的用法详解

1、const的用法 为什么使用const? 解答:因为(1) 采用符号常量写出的代码更容易维护;(2) 指针常常是边读边移动,而不是边写边移动;(3) 许多函数参数是只读不写的。 ...
  • stsw2046
  • stsw2046
  • 2012年09月27日 16:57
  • 2633

如何正确使用const、static、extern

转自:http://www.jianshu.com/p/2fd58ed2cf55前言本篇文章主要介绍在开发中怎么使用const、static、extern关键字。...
  • u011619283
  • u011619283
  • 2016年09月20日 17:28
  • 757

Static、const、extern区别

Static、const、extern区别
  • wang1514869032
  • wang1514869032
  • 2016年08月08日 16:43
  • 1158

IOS-objectiveC【语法】修饰符 static extern const

objectiveC【语法】修饰符 static extern const const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 /...
  • u014351782
  • u014351782
  • 2014年04月01日 14:52
  • 3647

嵌入式中最重要的四个词语static,extern,volatile,const

嵌入式中最重要的四个词语static,extern,volatile,const
  • changhonglin
  • changhonglin
  • 2015年08月18日 21:41
  • 500

iOS正确使用const,static,extern

static 修饰局部变量 让局部变量只初始化一次局部变量在程序中只有一份内存并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) 修饰全局变量 ...
  • HDFQQ188816190
  • HDFQQ188816190
  • 2016年05月17日 13:09
  • 5346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:const,static,extern详解
举报原因:
原因补充:

(最多只允许输入30个字)