C/C++学习
文章平均质量分 86
dnx000
自由简单
展开
-
和菜鸟一起学c之函数中堆栈及运行内存情况
和菜鸟一起学c之函数中堆栈及运行内存情况总是听说编译的时候什么堆啊,栈啊之类的。以前学数据结构的时候用过,栈比较常用,像搜索类的算法题都是要用到栈的。还有表达式计算也是。至于堆的话,排序的时候用的比较多。关于这方面,网上已经讲了很多了,下面把我看到比较好的,总结下。一般我们编译的C代码中在内存中分下面几个区:1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值转载 2013-05-05 14:20:55 · 607 阅读 · 0 评论 -
学c之gcc编译过程及其常用编译选项
学c之gcc编译过程及其常用编译选项上篇文章,知道了,C代码编译后存放在内存中的位置,那么C代码的整个编译过程又是怎样的呢?一条命令gcc hello.c就可以编译成可执行程序a.out,然后./a.out之后就可以执行hello.c这个程序的代码了。下面的文章分析的不错,就整理了下。hello.c:1. #include2. int main()3. {原创 2013-05-05 14:39:29 · 749 阅读 · 0 评论 -
c语言程序的存储区域与const关键字的使用方法
一.C语言程序的存储区域1.由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。2.C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域转载 2013-05-25 21:04:08 · 492 阅读 · 0 评论 -
C语言中volatile关键字的作用
一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:转载 2013-05-25 21:01:08 · 452 阅读 · 0 评论 -
C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别
1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。从作用域看:1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。2>静态局部变量具有局部作用域,它只被初始化一转载 2013-05-25 21:02:24 · 396 阅读 · 0 评论 -
C语言中堆和栈的区别
一.前言:C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如下图所示:1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。2.堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存转载 2013-05-25 21:05:23 · 386 阅读 · 0 评论