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

const

const最好理解,修饰的东西不能被修改

指针类型根据位置的不同可以理解成3种情况:

I 常量指针

// 初始化之后不能赋值,指向的对象可以是任意对象,对象可变。

NSString * const pt1;

II 指向常量的指针

// 初始化之后可以赋值,即指向别的常量,指针本身的值可以修改,指向的值不能修改

const NSString * pt2;

III 指向常量的常量指针

const NSString *  const pt3;

extern

等同于c,全局变量的定义

//x .h 声明

extern const NSString * AA;

//x .m 定义

const NSString * AA = @"abc";

// 调用

#import "x.h"

或者再次申明

extern const NSString * AA;

static

等同于c,将变量的作用域限定于本文件?

不同于java C++里面的类变量,oc没有类变量

疑问

我在.h文件里定义一个static变量,

I .h初始化

在不同的.m里调用都有值,这些值是否同一个对象?

【不同的对象】

II .m里初始化(or赋值)

初始化的值只在.m文件里有效果,即等同于c,将变量的作用域限定于本文件

其他.m文件调用的值都没有赋值。

【不同的对象】

结论

static

 // static变量属于本类,不同的类对应的是不同的对象

    // static变量同一个类所有对象中共享,只初始化一次

const

    // static const变量同static的结论I,只是不能修改了,但是还是不同的对象

 // extern const变量只有一个对象,标准的常量的定义方法

 // extern的意思就是这个变量已经定义了,你只负责用就行了

 voidmain(){

    char *str1={"Hello"};

     char *str2={"Hello World"};

    char * const ptr1 =str1 ;

    //指针常量--指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化 6  7     ptr1 =str2; //错误 因为这是一个常量指针,改变指向的地址了 8  9     printf("%s \n",*ptr1);

 }

 //编译错误    error C3892: 'ptr1' : you cannot assign to a variable that is const


 voidmain(){

  char *str1={"Hello"};

  char *str2={"Hello World"};

  char * const ptr1 =str1 ;

  //指针常量--指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化    *ptr1 ='A';// 正确 因为指向的地址的内容是可以变化的 printf("%c \n",*ptr1);

}

//输出  A

 voidmain(){

     char *str1={"Hello"};

    char *str2={"Hello World"};

    const char *ptr1 =str1;

  //常量指针--指向字符串常量,所指向的字符串内容不能变,但是指向的地址可以变化     ptr1=str2;// 正确 因为指向的地址是可以变化的     printf("%s \n",ptr1);

}

//输出 Hello World


 voidmain(){

    char *str1={"Hello"};

    char *str2={"Hello World"};

   const char *ptr1 =str2;

   //常量指针--指向字符串常量,所指向的字符串内容不能变,但是指向的地址可以变化     ptr1='A';// 错误 因为指向的地址是内容是不可以变化的     printf("%c \n",ptr1);}

//编译错误    error C2440: '=' : cannot convert from 'char' to 'const char *'

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,278评论 0 6
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    大罗Rnthking阅读 959评论 0 2
  • 1.写一个NSString类的实现 +(id)initWithCString:(c*****t char *)nu...
    韩七夏阅读 3,741评论 2 37
  • 什么时候会经常回忆杀,朋友聚会,同学聚会,所以的回忆都会把他拿出来讲,晚上的聚会,回忆了我高中三年狗血而又难忘的生...
    一二节阅读 271评论 0 1
  • 斜阳从云间穿过照射在树干上,树干上的阳光慢慢地移动了的位置。干枯的树枝在不知不觉间萌出了星星点点的新芽。凛...
    佳嘉_阅读 253评论 3 6