我的小小学习笔记(2)之C语言——浅谈关键字 const,static,volatile(1)
来源:互联网 发布:简体转繁体软件 编辑:程序博客网 时间:2024/06/05 03:52
1.const(它可应用在声明任何类型的变量的语句中 ,固化该变量的值)
test.c(无const)
*指针变量是存放地址的,如果想找到原来的那个空间,加“ * ",解引用。
*指针p是4个字节(32位平台),8个字节(64位平台)。
#include<stdio.h>int main(){int num = 10;//整型变量,4个字节int *p = #*p = 20;printf("num=%d\n", num);system("pause");return 0;}运行结果
图示
test.c(有const)
#include<stdio.h>int main(){const int num = 10;int *p = (int *)#//强制类型转换与p同类型*p = 20;printf("num=%d\n", num);system("pause");return 0;}
运行结果
图示
编译器优化了代码,C中没有优化,所以输出20;C++中优化,输出10。
2.volatile(作用:保证内存的可见性,使每次变量都到内存去取)
test.c
#include<stdio.h>int main(){ volatile const int num = 10;int *p = (int *)#//强制类型转换与p同类型*p = 20;printf("num=%d\n", num);system("pause");return 0;}
运行结果
3.static(修饰局部变量,把变量放在静态区,使变量的生命周期发生变化,作用域同局部变量)
*全局变量:在哪里都可以使用,把变量定义在所有代码块外。
生命周期:程序开始到程序结束。
作用域:整个程序。
*局部变量:把变量定义一个代码块内。
生命周期:进入作用域到出作用域结束。
作用域:局部范围内。
test.c(无static)
num是局部变量,num出了void test(),就销毁了,重新赋值为0,进行计算。
#include<stdio.h>void test(){int num = 0;num = num + 1;printf("num=%d\n", num);}int main(){ int i = 0;for (i = 0; i < 5; i++){test();}system("pause");return 0;}
运行结果
test.c(有static)
num被static修饰,等程序完全结束才销毁。
#include<stdio.h>void test(){static int num = 0;num = num + 1;printf("num=%d\n", num);}int main(){ int i = 0;for (i = 0; i < 5; i++){test();}system("pause");return 0;}
运行结果
图示(内存图)
*由于是入门新手,还望大神们批评指正。
阅读全文
1 0
- 我的小小学习笔记(2)之C语言——浅谈关键字 const,static,volatile(1)
- 我的小小学习笔记(3)----C的关键字
- C语言之auto、static、register、const、volatile、extern关键字
- 【C语言复习(一)】auto、static、register、const、volatile关键字的分析
- 我的小小学习笔记(1)之C语言--sizeof&strlen(1)
- C语言中关键字const、static、volatile的用法分析
- c语言学习笔记之const关键字(理解)
- 嵌入式系统C语言重点语法(1)——const、volatile、static、堆栈等的意义及用法
- 杂货边角(4):C语言static, inline, volatile, const等关键字解析
- c语言关键字学习之 static register inline volatile
- 我的小小学习笔记(4)----C++的关键字
- C语言关键字auto、static、register、const、volatile、extern
- C语言中关键字auto、static、register、const、volatile、ex...
- C语言关键字:static,const,inline,volatile与assert()等
- 解释一下C语言中的关键字const、volatile、static
- C语言之关键字(一)auto,register,static,const的了解
- 【C语言 C++】简单关键字Register,Const,Static,Volatile,typedef,Define的理解
- C语言中关键字auto、static、register、const、volatile、extern的作用
- transform.position坐标更改
- C++ 获取文件夹下的所有文件名
- I
- Quartz Web 页面管理器简介
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法
- 我的小小学习笔记(2)之C语言——浅谈关键字 const,static,volatile(1)
- 新学的三子棋小游戏
- 吃一堑,长一智~~跳槽一个月暨年中总结
- Git常用操作整理
- 通讯录.动态
- spring面试
- mint-ui —— checklist的使用
- UDP编程
- ASP.NET一系列问题与解决办法