const&static&extern

时间:2021-09-03 21:44:18

const

结论:

  如果const写在指针变量名的旁边, 那么指针的指向不能变, 而指向的内存空间的值可以变

如果const写在数据类型的左边或者右边, 那么指针的指向可以改变, 但是指向的内存空间的值不能改变

// 字符串常量,修饰account,既:account这个是常量不能改,但是他所指向的值 @"这个是可以改的",而且文档字符串常量都是这样的,颜色和宏的颜色也不一样。
static NSString * const account = @"account"; // 修饰指针指向的字符串,既:@"account1",是不能改的,可以用其他的指针指。
static NSString const *account = @"account1";

static

// 全局变量:只有一份内存,所有文件共享,与extern联合使用。
int a = ; // static修饰全局变量
static int age = ; - (void)test
{
// static修饰局部变量
static int age = ;
age++;
NSLog(@"%d",age);
}

上诉两个statuc分别修饰了全局变量和局部变量,作用效果同

结论:

  局部变量:1.延长局部变量的声明周期,程序结束时候才会销毁。

       2.局部变量只会生成一份内存,只会初始化一次。

             3.改变局部变量的作用域。

  全局变量:1.只能在本文件访问,修改全局变量作用句,生命周期不变。

                 2.避免重复定义全局变量。

extern

    获取全局变量(包括全局静态变量)的值,不能用于定义变量