c语言的变量,常量及作用域等

1.const定义常量

在C语言中,const可以用来定义的一个常量,在变量名前加上const即可。

int const a;

定义了一个a的整数常量,且a的值不能被修改。如果要修改a的值,有以下两种方法。

方法一

int const a=100;

在定义时,就对它进行初始化

方法二

在函数中声明const的形参在函数调用时会得到实参的值。

重点:const涉及指针变量的情况

const int * a;

int * const a;

在第一条语句中,const修饰的时指针a所指向的对象,也就是说我们无法同过指针a来修改其指向的对象的值。但是指针a本身的地址是可以改变的,既可以指向其他对象。

第二条语句中,cosnt修饰的指针a。因此,指针本身(地址)是不可以改变的,而指针所指向的对象的值是可以改变的。

2.define定义常量

define实际是一个预处理指令,其用途远大于定义常量这一功能。这里只介绍define定义常量的基本用法。

使用define实际是进行符号替换,方法为

#define 符号名 替换列表

符号名必须符合标识符命名规则。替换列表可以是任意字符序列,如数字,字符串,表达式等。列如:

#define  MUN “work hard!”/*后面的所有的MUN都会被替换为work hard!*/

#define AUS 99                   /*后面的所有的AUS都会被替换为99!*/

#define DEPP “\a”               /*后面的所有的DEPP都会被替换为“\a”!*/

习惯上,经常用大写字母来命名符号位,而用小写字母来命名变量

注意:我们在用#define的时候,千万记得不要在末尾加“;”,很多初学者些代码时习惯在每句代码后面加“;”。这里要小心。

3.作用域

定义:程序中可以访问一个指示符的一个或多个区域,既变量出现的有效区域,决定了程序的那些部分通过变量名来访问变量。一个变量根据其作用域的范围可以分为函数原型作用域,局部变量和全局变量。

1).函数原型作用域,其作用域始于“(”,结束于“)”。

如下列原型声明:

double Area(double radius);

radius 的作用域尽在于此,不能用于程序正文其它地方,因而可以省略。

2).局部变量

在函数内部定义的变量称为局部变量。局部变量仅能被定义该变量的模块内部的语句所访问。换言之,局部变量在自己的代码模块之外时不可见的。

对于局部变量,要注意的是,它们仅存在于。定义改变量的执行代码块中,即局部变量在进入模块时生成(压入堆栈),在退出模块时消亡(弹出堆栈)。定义局部变量的最长见的代码块时函数,代码如下:

/*在函数内声变量*/
void function1(){
  int x=10;
}
void function2(){
   int x;
   x=20;
}

整数变量x被定义了两次,一次在function1中,另一次在function2中,function1和function2中的x互不相关,原因是每个x作为局部变量仅在被定义的模块内可见。

3).全局变量

与局部变量不用,全局变量贯穿整个程序,它的作用域为源文件,可被源文件中的任何一个函数使用。他们在整个程序执行期间保持有效。示例代码:

#include <stdio.h>
int a,b;//全局变量
void function1(){
 
}
float x,y;
void function2(){
}
int main(int argc,char * argv[])
{
   return 0;
}

得出结论:上例中定义了a,b,x,y都是在函数外部定义的外部变量,都是全局变量。x,y是在function1之后,在function1内没有对x,y声明,所以他们在function1中无效,a,b定义在源程序最前面,因此在function1,function2,main内不加声明就可以使用。

对于全部变量有以下几点需要说明。

(1)对于局部变量的定义和声明,可以不加区分,而对于全局变量则不然。全局变量的定义和全局变量的声明并不是一回事,全局变量定义必须在所在的函数之外,且只能定义一次,其一般形式为

[extern] 类型说明符 变量名,变量名.....

其中extern可以省去不写,例如:

int a,b;等效于extern int a,b;

而全局变量声明出现在要使用改变量的各个函数内。在整个程序内,可能出现多次。全局变量在定义时就已经分配了内存单元,并且可做初始赋值。全局变量声明不能在赋予初值,只是表明在函数内要使用某外部变量。

(2)外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量,因而使得函数的独立性降低。从模块化程序设计的观点来看这是不利的,因此在不必要时尽量不要使用全局变量。

(3)全局变量的内存分配是在编译过程中完成的,它在程序的全部执行过程中都要占用储存空间,而不是仅在需要时才开辟储存空间。

(4)在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。因此,若在改函数中想要使用全局变量,则不能在定义一个同名的局部变量。

(5)全局变量的作用域可以通过关键字extern扩展到整个文件或其他文件。

原文地址:https://www.cnblogs.com/hj-1996-123/p/10211943.html

时间: 2024-11-09 13:12:58

c语言的变量,常量及作用域等的相关文章

Go 语言基础——变量常量的定义

go语言不支持隐式类型转换,别名和原有类型也不能进行隐式类型转换 go语言不支持隐式转换 变量 变量声明 var v1 int var v2 string var v3 [10]int // 数组 var v4 []int // 数组切片 var v5 struct { //定义结构体(Java中的实体类,自定义类型) f int } var v6 *int // 指针 var v7 map[string] int // map,key为string类型,value为int类型 var v8 f

05.C语言数据、常量和变量

C语言数据.常量和变量 图片文字等都是数据 ,在计算中的0和1存储 一.分类 数据分成静态数据和动态数据. 1.静态数据:一些永久性的数据,一般存储在硬盘中,只要硬盘没有损坏数据都是存在的 一般以文件的形式存储在硬盘上,电脑关机启动依然存在 2.动态数据:程序运行过程中,动态产生的临时数据,一般存储在内存中,内存的存储空间一般较小,计算机关闭 后这些数据就会被清除,软件或者电脑关闭则这些临时数据也会被清除. 3.静态数据和动态数据可以转换. 4.为什么不把动态数据存放到硬盘?因为直接访问内存速度

C语言中变量、全局变量与变量的作用域

什么是变量: 变量常量都是表征数据的一种形式:常量用来表示数据的值: 变量不仅可以用来表示数据的值:还可以用来存放数据:因为变量对应着一定的内存单元: 变量和常量必须先定义后使用. 变量名和常量名都是一种标识符,用来标识变量和常量的.变量和常量必须用标识符(或者可以理解成一个名字)来表示后才能使用. 赋值表达式语句把值赋给变量,或者更一般地说,把值赋给存储空间. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Go语言 基础 变量和常量

变量的初始化 Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作.每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0. 字符串变量的默认值为空字符串. 布尔型变量默认为false. 切片.函数.指针变量的默认为nil. 当然我们也可在声明变量的时候为其指定初始值.变量初始化的标准格式如下: var 变量名 类型 = 表达式 变量与常量 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语言中标识

Go语言(一) 变量和常量

变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头. 举几个例子:abc, _, _123, a123. 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符. 关键字和保留字都不建议用作变量名. Go语言中有25个关键字: 1 break default func interface select 2

8.JavaSE之变量、常量、作用域

变量variable: 变量是什么:就是内存中开辟的可以变化的量! Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域 type varName = value://数据类型 变量名 = 值: 注意事项: 每个变量都有类型,类型可以是基本类型,也可以是引用类型. 变量名必须是合法的标识符. 变量声明是一条完整的语句,因此每一个声明都必须以分号结束. 1 public class Demo06 { 2 public sta

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类

C语言(四)变量的作用域

一.变量的作用域 C语言根据变量的作用域不同,将变量分为局部变量和全局变量. 1.局部变量 1)定义:在函数内部定义的函数,称为局部变量.形参也属于局部变量. 2)作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它. 2.全局变量 1)定义:在所有函数外部定义的变量,称为全局变量. 2)作用域:全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以再其定义位置之后共享. 二.变量的存储类型 变量存储类型就是指变量存储在什么地方. 有三

C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期

全局变量 作用域:全局作用域(全局变量只需在一个源文件中定义,就可以作用于所有的源文件.) 生命周期:程序运行期一直存在 引用方法:其他文件中要使用必须用extern 关键字声明要引用的全局变量. 内存分布:全局数据区 注意:如果在两个文件中都定义了相同名字的全局变量,连接出错:变量重定义 全局静态变量 作用域:文件作用域(只在被定义的文件中可见.) 生命周期:程序运行期一直存在 内存分布:全局数据区 定义方法:static关键字,const 关键字 注意:只要文件不互相包含,在两个不同的文件中