美文网首页iOS进阶之路
IOS:const的使用

IOS:const的使用

作者: 康小曹 | 来源:发表于2019-01-18 11:13 被阅读61次

首先摆出代码:

int main() {
    @autoreleasepool {
        int a = 10;
        const int *p = &a;
        int const *p2 = &a;
        int * const p3 = &a;
        
        int b = 20;
        *p = 12;
        p = &b;
        
        *p2 = 12;
        p2 = &b;
        
        *p3 = 12;
        p3 = &b;

        printf("%d",*p);
        printf("%d",*p2);
        printf("%d",*p3);
    }
}

问:最后输出结果是?
答案:


const

解释:
const的用法:修饰的部分不可变,为常量,但是不会改变变量的作用域和生命周期。
情况1:

const int *p = &a

此时const修饰的是p,也就是p所指向的内存地址的值!!,所以当尝试使用p改变被const修饰的常量时,编译器报错,只读的变量不可以被再次赋值;
情况2:

int const *p = &a;

此时const修饰的仍然是*p,同情况1;
情况3:

int *const p = &a;

此时const修饰的是变量p,也就是局部变量p不能被改变,所以当尝试使用*p改变p所指向的内存地址a的值时,是可行的。但是当尝试重新给p赋值,让其指向b的内存地址时,编译器报错。
情况4:

int const c = 10;
const int c = 10;

这中情况同情况一和情况二一样,都是修饰变量c,也就不存在指针那么复杂的情况。

const和宏
const编译时确定,如果出错,编译器会报错;
宏是预编译,只做拷贝操作,不会报错;
const不能定义函数;
宏可以定义函数

相关文章

  • 一些小链接

    1、iOS 宏(define)与常量(const)的正确使用 iOS宏(define)与常量(const)的正确使...

  • #define const static

    iOS 宏(define)与常量(const)的正确使用

  • iOS简单学之13 - define与const区别

    参考:iOS 宏(define)与常量(const)的正确使用 写的比较仔细,推荐用const, 苹果api使用c...

  • 宏(define)与常量(const)

    参考文档 iOS 宏(define)与常量(const)的正确使用 15分钟弄懂 const 和 #define ...

  • iOS const的使用

    const修饰符将其后的变量设置为常量,即str1和str2为常量,两者的区别在于,常量指针是否可以指向其他的内存...

  • IOS:const的使用

    首先摆出代码: 问:最后输出结果是?答案: 解释:const的用法:修饰的部分不可变,为常量,但是不会改变变量的作...

  • static const extern define

    了解static 与 const的使用 看我上一篇文章.iOS写法优化,苹果推荐是使用const.下面我把整理的区...

  • iOS const、宏、static、extern的关系

    iOS const、宏、static、extern的关系 iOS const、宏、static、extern的关系

  • 2019-03-08

    iOS const、宏、static、extern的关系 - 简书 iOS中static,const,extern...

  • iOS中static,const,extern相关的问题

    iOS中static,const,extern相关的问题 iOS中static,const,extern相关的问题

网友评论

    本文标题:IOS:const的使用

    本文链接:https://www.haomeiwen.com/subject/alogdqtx.html