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 声明全局常量,并且在相关实现文件中定义其值。(全局符号表中)

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

相关文章推荐

C语言易混淆关键词详解-const,static,extern,typedef,声明

const const关键词并不能把一个变量变成一个常量, 在符号前加上const表示这个符号不能被赋值, 即他的值对这个符号来说是只读的, 但并不代表这个值不能用其他方法去改变. 通过下面的例子...

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

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

C语言易混淆关键词详解-const, static, extern, typedef, 声明

Const Const关键词并不能把一个变量变成一个常量, 在符号前加上const表示这个符号不能被赋值, 即他的值对这个符号来说是只读的, 但并不代表这个值不能用其他方法去改变. 通过下面的例子就...

const extern static volatile 小结

  • 2016年04月17日 15:17
  • 624B
  • 下载

简单介绍C语言中auto,register,static,const,volatile,extern等几个关键字的作用

C语言中auto,register,static,const,volatile,extern等几个关键字的作用

const,extern,static,volatile的使用

  • 2010年05月11日 13:08
  • 4KB
  • 下载

全局变量、extern/static/const区别与联系

在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块):     在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK...

嵌入式编程中关于const,static,extern,volatile的用法

一.const的用法:为什么使用const? 采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的边界和switc...
  • neuq521
  • neuq521
  • 2013年01月21日 14:26
  • 1106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:const,static,extern详解
举报原因:
原因补充:

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