在一次教程学习中,看到该知识点并记录了下来,但愿与你们共同探讨学习。c++
1、静态存储与动态存储ide
静态存储变量一般是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束。动态存储变量是在程序执行过程当中,使用它时才分配存储单元,使用完毕当即释放。动态存储变量最典型的例子是函教的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕当即释放,若是一个函数被屡次调用 ,则反复地分配和释放形参变量的存储单元。函数
从以上分析可知,静态存储变量是一直存在的 ,而动态存储变是则时而存在时而消失。 咱们又把这种因为变量存储方式不一样而产生的特性称变量的生存期。( 见如下脚本 )学习
1 Action() 2 { 3 4 int i; 5 6 //执行函数auto_static 5次 7 for (i=0;i<5;i++) { 8 auto_static(); 9 } 10 11 12 return 0; 13 } 14 15 16 //静态动态变量测试函数 17 void auto_static(void) 18 { 19 int var_auto=0; //动态变量,每次调用都从新初始化 20 static int var_static=0; //静态局部变量:只初始化1次 21 lr_output_message("var_auto=%d,var_static=%d\n",var_auto,var_static); //输出两个变量的值 22 var_auto++; 23 var_static++; 24 }
你们能够想一想,两个变量输出的都是什么值:测试
1 Action.c(38): var_auto=0,var_static=0 2 Action.c(38): var_auto=0,var_static=1 3 Action.c(38): var_auto=0,var_static=2 4 Action.c(38): var_auto=0,var_static=3 5 Action.c(38): var_auto=0,var_static=4
2、指针spa
指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称做指针的取值。指针能够指向某些具体类型的变量地址,例如int、 long 和double。指针
根据出现的位置不一样,操做符 * 既能够用来声明一个指针变量,也能够用做指针的取值。当用在声明一个变量时,表示这里声明了一个指针。其它状况用到 * 表示指针的歌值。code
& 是地址操做符,用来引用一个内存地址。经过在变量名字前使用&操做符,咱们能够获得该变量量的内存地址。(见如下解本)blog
1 Action() 2 { 3 4 //将var1值赋给变量deref 5 int *ptr; //生命一个int类型的指针变量 6 int deref; 7 int var1 = 35; //定义变量并复制,此时会分配存储单位,有存储地址 8 int var = 99; 9 10 ptr = &var; //ptr指向变量var的内存地址,但不能够把数值赋给指针变量 11 deref = *ptr; //对指针进行取值,打印存储在指针地址中的内容 12 lr_output_message("var is %d",deref); 13 14 15 return 0; 16 }
输出的值为: var is 99教程