NSString *const str1 = @"你好";
//str1 = @"hello"; //报错,不能重新赋值
//解析:const在NSString *后面.后面的值不能改变,是一个常量.和其它语言(如js)的const a = 10,效果一样.a就不能变化了
const NSString * str2 = @"你好";
NSLog(@"%p",&str2); //0x7ffeea646100 str2在栈区的内存地址
NSLog(@"%p",str2); //0x100f33020 //坑里放的值,其实就字符串对象的地址
str2 = @"hello";
NSLog(@"%p",&str2);//0x7ffeea646100 str2在栈区的内存地址
NSLog(@"%p",str2);//0x100f33060
//解析:const放在最前面修饰,指的是该变量的的的值,即本身在栈中的内存地址不变即可.至于里面存的值则是可以变化的
//重点理解:自身的内存地址和指向的内存地址
网友评论