c语言中的变量总结

变量有两个属性:作用域和生存期

内存(分配给用户使用)分为:程序区、静态存储区、动态存储区。

变量的存储方式分为静态存储方式和动态存储方式。

一、作用域

按作用域区分,可分为:全局变量和局部变量。

1、局部变量

亦成为内部变量,定义在函数内部,包括自动变量(函数的形参和定义在函数内部的变量,动态分配内存;离开函数,值就消失)、静态局部变量(static修饰,函数调用结束,值不消失;离开函数,值扔保留)、寄存器变量(离开函数,值就消失)。

其中:自动变量和寄存器变量的存储在动态存储区,静态局部变量存储在静态存储区。

2、全局变量(均存放在静态存储区中)

亦成为外部变量,定义在函数外部,包括静态外部变量(static修饰)、外部变量。

其中:静态外部变量仅允许本程序文件内部使用,外部变量允许其他程序文件使用(可用extern扩展)。

二、生存期

1、动态存储

包括自动变量、寄存器变量、形式参数,均在本函数内有效。

2、静态存储

包括静态局部变量(本函数内有效)、静态全局变量(本文件内,自定义位置至文件末尾)、全局变量(本文件和其他文件均可用)。

注:extern有两种使用方法:一、本文件内,假如全局变量定义位置之前的函数需要使用全局变量,则在使用位置之前,需要将全局变量使用extern扩展到该处;二、其他文件,若需使用本文件定义的全局变量,需用extern扩展。

时间: 2024-11-08 09:11:14

c语言中的变量总结的相关文章

C 语言中的变量为什么不能以数字打头

C 语言中的变量为什么不能以数字打头? C 语言中的变量为什么不能以数字打头? 不要告诉我编译原理书上有.我暂时看不懂. 除了下面的解释外, “假如变量名允许以数字开头的话,那么语法分析器在解析一个全部为数字的字串的时候,就无法判断它是一个数字常量还是一个变量名了” 还有别的解释吗? 假如变量是2n呢?也可以和数字2区别啊?为什么不行呢? C语言这样规定是不是单纯为了编译器词法分析简单啊?还有别的原因吗? 如果你知道就跟我好好说说吧. 没有规定就不成方圆,在最初的时候如果没有那么多的规定,这样基

认识C#语言中的变量和数据类型

C#语言中的变量 概念:一块储存数据的内存空间,并且该内存区域的数据内容可以变化 变量的三要素:数据类型.变量名.变量值 先声明后赋值 变量的声明:指定一块内存空间,用于存放数据 语法:数据类型 变量名 例如:int number;  用于存放整数 变量的赋值: 例如:int number; number=6;  用于存放整数 变量命名 硬性要求: 1.变量只能有数字.字母.下划线组成 2.变量名不得以数字开头 3.名称不能与关键字相同 4.同一个函数中变量名不得相同 软性要求: 1.变量名能够

go语言中在变量后加上接口是什么意思?

如题刚刚开始学习go 语言有些不懂: a.Data = make(map[string]interface{}) 我认为它是在申请a.Data map为字符串类型的空间,那么它后面接一个空的interface是什么意思? go语言中在变量后加上接口是什么意思? >> golang 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/golang/1010000008853468/go语言中在变量后加上接口是什么意思.html

Go语言中的变量

1 概述 变量(Variable)是程序运行过程中,内容可以变化(修改)的量,变量的功能是存储用户的数据,是计算机语言中能储存计算结果或能表示值抽象概念.变量,是通过变量的标识符定位值的过程.变量的内存模拟演示: 2 定义:声明和初始化 定义变使用var关键字,需要指定其类型,可以同时初始化,如果没有指定初始化值,则使用类型的默认值,语法如下: // 声明变量,未初始化(默认值初始化) var name string // 声明变量,特定值初始化 var user string = "Hank&

2015.12.01 vim编写程序运行的步骤 Xcode基本介绍(快捷键) C语言中的变量

文本编辑器 Windows:TurboC.Dev-C++ Linux:Vim.Emacs (Vim是Mac系统自带,也是今天用到的文本编辑器) Vim · 创建文件(Terminal中完成) vim printName.c(.c为结尾是C语言的标志) vim有两种模式:命令模式 & 编辑模式 在命令模式下输入i(a)就可以进入编辑模式(编辑模式的标志是在编辑器下方显示"INSERT") (操作方式在上一篇) (P.S."#include"导入自己定义或者系统

C语言中定义变量“#X”,”X##”, “##X” 和“##X##”解析

关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号.比如下面代码中的宏: 1. #使用 #define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Warning: " #EXP "/n"); } / while(0) 那么实际使用中会出现下面所示的替换过程: WARN_IF (divider );

c语言中的变量声明

    在C/C++中,所有的变量必须先声明后使用.一个声明指定一个变量类型,后面的变量中可以有一个或多个表示该同类型的变量.例如: int i,j,k=0;  //表示定义了3个整形变量 char c;     //定义了一个字符型c 当然,一个声明语句中多个变量可拆开来写,如上面的声明等价于 int i=0; int j=0; int k=0; char c; 任何变量的声明都可以使用const限定符限定.限定后值不能被修改,例如: #include <stdio.h> int main(

JAVA语言中的变量

1.变量 变量是一个代词,指代内存中的数据. 变量是可以改变的量---->指代不同的数据. 2.变量的使用 变量必须先声明后使用: 语法:数据类型 变量名:   int       a: 可以一条语句声明多个同类型的变量 如:int a,b,c; int a=1,b,c=2; 3.变量的命名 规定: 只能包含字母,数字,_,$,并且不能以数字开头 严格区分大小写 不能使用关键字(java中已经用了的字) 建议: 不建议中文命名变量 最好"见名知意" 驼峰命名法:第一个单词首字母小

003_go语言中的变量

代码演示: package main import "fmt" func main() { var a = "initial" fmt.Println(a) var b, c int = 1, 2 fmt.Println(b, c) var d = true fmt.Println(d) var e int fmt.Println(e) f := "short" fmt.Println(f) } 代码运行结果: initial 1 2 true