C语言变量的类型和存储位置

***************************************************

更多精彩,欢迎进入:http://shop115376623.taobao.com

***************************************************


1. C语言变量主要分为全局变量静态全局变量局部变量静态局部变量寄存器变量。其中静态变量用static关键字进行修饰。程序所占用的内存可以分为以下几个部分:

(1)代码段-存放程序代码,只读的,不能修改。

(2)全局区(静态区),又称为数据段

其中.data段存放的是已经初始化的全局变量静态变量(静态全局变量和静态局部变量)。.

         bss段存放的是未初始化的全局变量和静态变量(静态全局变量和静态局部变量)。bss段会将未初始化的变量填充为0.

(3): 是一种线性结构,类似链表实现,也可由其它方法实现。malloc, realloc函数一般从堆上分配内存。注意:和数据结构中的堆不同。

(4): 后进先出结构。主要存储的是局部变量,函数形参,以及函数地址。

(5)常量区:存储字符串常量。


2. 变量的生存期和作用域

全局变量: 全局变量的作用域是整个源程序,即多个文件中有效。通过extern声明。

静态全局变量: 静态全局变量和全局变量的存储域是相同的,都存储在数据段。但作用域不相同,用static声明的静态全局变量作用域被限制在本文件内。在文件外是无效的。函数或变量前加static,可防止命名冲突。

局部变量: 局部变量是定义在函数体内的,当函数执行结束后,就自动释放。作用域为整个函数体。

静态局部变量: 与局部变量不同的是,它存储在全局区或是静态区,局部变量存储在上。静态局部变量的作用域也是函数体,函数体外无效。但当函数执行完之后,静态局部变量一直存在,下次调用时可以直接利用上次保存的值,即静态局部变量就初始化1次,不会重复初始化。


如果在头文件声明了静态变量,那么每个包含该头文件的源文件中的静态变量地址都是不相同的,即视为不相同的变量,这样可以防止变量重定义。也说明了静态全局变量将作用域限制在了文件内

3. 可以通过readelf -a 可执行文件,查看每个段情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx+tomcat负载均衡

最近练习nginxtomcat负载均衡。根据一些资料整理了大体思路,最终实现了1个nginx2个tomcat负载均衡。 安装JDK 1》进入安装目录,给所有用户添加可执行的权限 #chmod x jdk-7u67-linux-i586.rpm //不知这步有没有必要 2》安装JDK 输入命令#rpm –ivh jdk-7…

linux 最强shell,最牛B 的 Linux Shell 命令(一)

引言Shell作为Unix系操作系统当中最有魅力且不可或缺的组件,经过数十载的洗礼不仅没有被淘汰,而且愈加变得成熟稳健,究其原因,大概因为它是个非常稳固的粘合剂,能够把大量功能强大的组件任意配搭,总能很好很…

更改Docker默认的images存储位置

Docker的镜像以及一些数据都是在/var/lib/docker目录下,它占用的是Linux的系统分区,也就是下面的/dev/vda1,当有多个镜像时,/dev/vda1的空间可能不足,我们可以把docker的数据挂载到数据盘,例如:/dev/vdb目录…

malloc/free和new/delete的区别

*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com *************************************************** malloc与free是C/C语言的标准库函数,new/delete是C的运算符。它们都可用于…

HDU 1217 Arbitrage (Floyd + SPFA判环)

题目链接:HDU 1217 Arbitrage 简单的货币转换问题,给定多种货币,以及货币之间的汇率,问能否通过货币的转换实现收益。 例如: 1 US Dollar buys 0.5 British pound, 1 British pound buys 10.0 French francs, and 1 F…

linux libbz2.so.1,libbz2.so.1.0 = not found 试过了链接和设置环境变量

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼LD_LIBRARY_PATH. ldd steamui.solinux-gate.so.1 > (0xf7700000)libtier0_s.so > ./libtier0_s.so (0xf648e000)libv8.so > ./libv8.so (0xf5ba3000)libvideo.so > ./libvideo.so (0xf57e2000)libvstdlib_s.so > .…

对互联网中常见地图的坐标系探讨

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.背景 目前项目中使用百度地图、高德地图、谷歌中国地图、天地图的需求越来越多,这里我跟大家一起对各地图使用的坐标系做一个简单的探讨。…

unsigned int + int型结果分析

*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com *************************************************** 代码如下: “//”后为调试中的结果 unsigned int a 6; //a 6 …

MAC OSX在视图port哪个程序占用,杀死进程的方法

sudo lsof -i :9000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEjava 61342 a 313u IPv6 0x1111111111111 0t0 TCP *:cslistener (LISTEN)在此基础PID杀死进程:sudo kill -9 61342 版权声明:本文博主原创文章&am…

讯飞输入法有没有Linux,Debian testing 安装讯飞输入法 - Linux系统与应用 - LinuxApp - 水木社区...

突然发现Deepin发行版带有讯飞输入法,于是折腾了一会,安装好了这个输入法,现把安装过程分享如下:软件包的依赖:Package: iflyimeVersion: 0.9.962Section: develPriority: optionalArchitecture: amd64Depends: libboo…

几种C#程序读取MAC地址的方法

原文:几种C#程序读取MAC地址的方法以下是收集的几种C#程序读取MAC地址的方法&#xff0c;示例中是读取所有网卡的MAC地址&#xff0c;如果仅需要读取其中一个&#xff0c;稍作修改即可。 1 通过IPConfig命令读取MAC地址 ///<summary>///根据截取ipconfig /all命令的输出流…

写出float x 与“零值”比较的if语句——一道面试题分析

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 写出float x 与“零值”比较的if语句 请写出 float x 与“零值”比较的 if 语句&…

Conditional project or library reference in Visual Studio

Conditional project or library reference in Visual Studio In case you were wondering why you haven’t heard from me in a while, I’ve been busy, which isn’t really of much importance unless you know me on a personal level. What is relevant is that I recen…

linux 双mipi摄像头,VS-RK3399 在linux系统下面调试Mipi camera接口介绍

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼debian系统目前支持Usb camera是没有问题&#xff0c;走UVC功能接口。那么mipi 接口camera和并口接口的camera&#xff0c;在Debian系统怎么设置呢&#xff0c;其实原理一样&#xff0c;也走uvc接口封装函数.下面深圳视壮给大家简单…

HTTP必知必会

2019独角兽企业重金招聘Python工程师标准>>> HTTP消息HTTP请求消息HTTP响应消息消息首行请求行响应行消息头部请求头请求头消息正文请求正文响应正文Web服务器把接收到的HTTP请求消息封装成request对象&#xff0c;作为service的参数传入service函数&#xff0c;ser…

float数据在计算机内存中的存储方法

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 浮点型变量在计算机内存中占用4字节&#xff08;Byte&#xff09;,即32-bit。遵循IEEE…

Geometric Shapes - POJ 3449(多边形相交)

题目大意&#xff1a;给一些几何图形的编号&#xff0c;求出来这些图形都和那些相交。分析&#xff1a;输入的正方形对角线上的两个点&#xff0c;所以需要求出来另外两个点&#xff0c;公式是&#xff1a;x2:(x1x3y3-y1)/2; y2:(y1y3x1-x3)/2;x4:(x1x3-y3y1)/2; y4:(y1y3-x1x3…

更新10_linux,时隔十年,QQ更新了Linux版本

昨天1024程序员节&#xff0c;QQ悄悄地更新了QQ for Linux&#xff0c;也许是给各位一个惊喜吧。官网及其的简陋。和一个Word文档似的。十年一更&#xff0c;有网友称&#xff0c;瞬间回到QQ2006&#xff0c;确实界面功能有些落后&#xff0c;相信QQ可以跟上潮流的&#xff0c;…

[渗透测试]扫目录,Sqlmap利用均超时,利用dirb扫描

今天碰到一个网友传来的Webshell地址&#xff0c;问我对方如何取得webshell。 网站为阿里云服务器&#xff0c;存在明显的注入漏洞&#xff0c;但是任何语句都会令网页报错&#xff0c;sqlmap一直超时&#xff0c;御剑扫描目录1个线程也会导致被屏蔽IP。 经一学长提点&#xff…

x = x+1,x+=1,x++那个的执行效率高

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** x x1的效率最低 1&#xff09;读取右边x的地址 2&#xff09;执行x13&#xff09;读…