關(guān)于const 修飾的一些知識(shí)

1、前言

  1. const 修飾的是后面的東西
  1. const修飾的東西不可變

2、驗(yàn)證

1. 代碼

static NSString *const a = @"a";//const 在“*” 與 “a” 之間
static NSString const* b = @"a";//const 在“*” 與 “NSString”之間
static const NSString *c = @"a";//const 在“NSString”前面
const NSString static *d = @"a";//const 在最前面

static NSString const * const A = @"a";//*前有const,* 與 A 之間也有const

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self setUP];
}

- (void)setUP {
    NSString *aa = @"a";
    a = aa;//報(bào)錯(cuò)
    b = aa;
    c = aa;
    d = aa;
    A = aa;//報(bào)錯(cuò)

//下面全部報(bào)錯(cuò)
    *a = aa;
    *b = aa;
    *c = aa;
    *D = aa;
    *A = aa;
}

2.分析

  1. ** a:const*a 之間**
  1. 這時(shí)候,const修飾的是a,也就是a指針變量的地址,這時(shí)候a存的是字符串常量區(qū)的@“a”的地址。
  1. 所以按常理來說可以改變*a,但是不能改變a的值。
  2. 但是這里*a也是改變不了的,下面擴(kuò)展會(huì)講到
  3. ** b、?c 、 d : 都在*之前**

b = @"a";//const 在“*” 與 “NSString”之間
c = @"a";//const 在“NSString”前面
d = @"a";//const 在最前面
b 、c、 d的const 分別修飾的是b、c、*d
b對(duì)應(yīng)的語義為b指針指向的內(nèi)存空間的值。所以,可以改變b,但是不能改變b

  1. A*前有const,*A之間也有const

綜上a、b、c、d的分析,A 就很容易被理解了。

3、擴(kuò)展.字符串的特殊性

為什么*a的值不能改變?

  1. 字符串是存在字符串常量池里面,然后要是有個(gè)指針想要指向一個(gè)字符串,先會(huì)到字符串常量區(qū)進(jìn)行查找
  2. 如果沒有,就在字符串的常量區(qū)創(chuàng)建一個(gè),把指針指向字符串常量區(qū)
  3. 如果有,就直接把指針指向字符串的常量區(qū)。
  4. 所以,相同內(nèi)容的字符串指針,其指向的內(nèi)存地址都是一樣的, 但是這個(gè)些字符串的指針變量的內(nèi)存地址則可以是不同的。

關(guān)于字符串的存儲(chǔ)請看這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區(qū)別? C沒有Protection行為...
    阿面a閱讀 7,711評(píng)論 0 10
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,364評(píng)論 0 6
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,473評(píng)論 3 44
  • 楊曉東,江湖人稱老楊,核桃品牌策劃CEO,核桃?guī)蛣?chuàng)始人 晚上約了女朋友,去吃啥好呢~~畢竟不能再去肯德基喝可樂了....
    老楊開竅閱讀 145評(píng)論 0 0
  • (一) 又做夢了,這個(gè)時(shí)間醒來著時(shí)又點(diǎn)早,黑黑靜靜的夜,透露著一種清醒的可怕,這種感覺不能說不好,也不能說好,太過...
    雨竹姑娘閱讀 221評(píng)論 0 1