【编程基础】C语言的变量-新手必备

大家在初学C语言的时候对各种变量之间的区别以及存储布局可能都有很多疑问,造成在使用变量的时候可能会遇到错误的地方。这里做一个简单的总结。

首先是全局变量和静态变量

全局和静态变量都在堆里。

全局变量的作用范围是整个程序(如果程序是多个文件,必须在其他的文件中说明)。

静态变量的作用范围要看静态变量的位置,如果在函数里,则作用范围 就是这个函数。

静态变量又分为静态全局变量静态局部变量

静态全局变量,只在本文件可以用,虽然整个程序包含多个文件,但静态全局变量只能用在定义它的那个文件里,却不能用在程序中的其他文件里。

它是定义存储因型为静态型的外部变量,其作用域是从定义点到程序结束,所不同的是存储类型决定了存储地点,静态型变量是存放在内存的数据区中的,它们在程序开始运行前就分配了固定的字节,在程序运行过程中被分配的字节大小是不改变的,只有程序运行结束后,才释放所占用的内存。

全局变量是没有定义存储类型的外部变量,其作用域是从定义点到程序结束,省略了存储类型符,系统将默认为自动型。

自动型变量存放在堆栈区中,堆栈区也是内存中一部分,该部分内存在程序运行中是重复使用的。

按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。

按作用域分,全局变量在整个工程文件内都有效;静态全局就量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。

全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知,所以一般在定义的时候一定要赋初值。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【Java基础】Java语言中的流程控制

前言: 上一篇文章写了面向对象的基础知识,接下来就开始写真正的代码了。逻辑判断和控制流程是编码中最小的逻辑单元,是整体逻辑的基石,所以每一个写代码的对于这一块...

3435
来自专栏Script Boy (CN-SIMO)

创建自定义类的对象数组

源代码 public class Student{ static int number = 0; // 静态变量的访问可以不用创建类的实例就可...

2030
来自专栏cs

python的函数

2574
来自专栏owent

C++ 新特性学习(四) — Bind和Function

木有错,这是C++,并且很方便地实现了委托 这就是传说中的绑定库和增强型的函数对象 接下来一个一个来

581
来自专栏技术小黑屋

垃圾回收器如何处理循环引用

垃圾回收是一门编程语言中必不可少的一部分,不论是手动释放内存的C和C++,还是自动回收垃圾的Java和C#等语言。对于Java这样的语言,一般的开发者不强求关心...

732
来自专栏玄魂工作室

如何学python 第10课 创建自己的函数

在上一节课里,我们学习了一些关于错误检测和错误处理的知识。这节课我们来学习函数。我们将会介绍什么是函数,以及如何创建函数。 函数是什么? 函数是一系列指令的集合...

25512
来自专栏海天一树

小朋友学Python(23):类的属性与方法

(一)类的私有属性 __private_attr:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__pri...

2538
来自专栏xingoo, 一个梦想做发明家的程序员

c++中类长度解析

通常我们定义一个类,它所占的空间有多大呢? 首先我们看一下下面的这个类 class A{ public: void func1(void){ ...

1675
来自专栏coding for love

JS入门难点解析7-this

(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)

601
来自专栏开发与安全

从零开始学C++之从C到C++(一):const与#define、结构体对齐、函数重载name mangling、new/delete 等

一、bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节。 声明方式...

1750

扫码关注云+社区