iOS中const的简单介绍

简单用法

基本数据类型

const 在基本数据类型中的用法

- (void)baseConst {
    // 这两种情况,是一样的.
    // 只读常量
    int const a = 10;
    const int b = 20;
}

指针类型

指针 的简单用法

- (void)pointer {
    // int类型的变量(整形变量)
    int a = 20;
    // 指针变量:指向int类型的变量的地址,作用是存储地址
    int* p = &a;
    *p = 30;
    NSLog(@"%d", a);
}

const指针 的结合使用

- (void)pointerAndConstSuper {
    int a = 10;
    int b = 20;
    // 这两种情况是一样的,修饰的是具体的值(*p与*p1不可修改,但是p与p1可以修改)
    int const * p = &a;
    const int* p1 = &a;
    NSLog(@"%d, %d", *p, *p1);
    // 可以修改地址
    p = &b;
    p1 = &b;
    NSLog(@"%d, %d", *p, *p1);
    b = 300;
    NSLog(@"%d, %d", *p, *p1);
    // 下面就错了
//    *p = a;
//    *p1 = a;
}

注意下面的用法:

- (void)superPointerAndConstSuper {
    int a = 20;
    int b = 30;
    const int * const p = &a;
//    p = &b; // 错的
//    *p = b; // 也是错的.
}

宏与常量的异同

  • 宏是替换,没有变量的概念.用到就会有多余的内存.编译之前,就有了.
  • 常量是全局的,内存只有一份.

使用场景

方法参数中使用

void pointer (const int* p) {
    // 自己想想看吧
}

静态常量

static NSString* const CoderHG = @"CoderHG";

全局常量

// HGConst.h文件
extern NSString * const HGID;

// HGConst.m文件
NSString * const HGID = @"http://www.520CoderHG.com";

建议

在开发中,不要用宏定义来定义常量.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容