extern
声明外部属性和全局变量时使用,一般外部文件可使用的函数和变量都是extern的,没有进行初始化int yy = 10;
int main(int argc, const char * argv[])
{
extern int yy; //10
printf("%d",yy); //10
cout << &yy << endl; //0x100001068
int yy; //重新初始化一个新的tt变量,和全局内存地址不一样
cout << &yy << endl; //0x7fff5fbff5e4
static bb;
一般用于对私有变量的声明,还有局部变量全局性的声明,只进行一次初始化分配内存空间,之后使用直接赋值
static int zz = 10;
static声明的变量,默认值是0,而不是随机值
对函数参量不能使用 static
int pp(static int c);
register
register变量必须是能被CPU所接受的类型。这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度。不过,有些机器的寄存器也能存放浮点数。
其次,因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址。
实际上,许多编译程序都会忽略register修饰符,因为尽管它完全合法,但 它仅仅是暗示而不是命令