龙空技术网

C语言中的常量与变量

快乐每日数学 286

前言:

此时大家对“c语言中合法常量的定义是什么”都比较关心,小伙伴们都需要了解一些“c语言中合法常量的定义是什么”的相关文章。那么小编也在网摘上汇集了一些对于“c语言中合法常量的定义是什么””的相关资讯,希望看官们能喜欢,咱们一起来学习一下吧!

也许很多人会认为常量与变量很简单,没有必要介绍,但是往往认为简单的事物,它却不简单。对它了解不够深入,往往在学习后面的知识时感到费劲,C语言中的精华指针就是如此,要是你学习指针感到吃力,段错误等,那么说明你对你认为简单的常量变量理解的还不够深入,知识不够扎实。

一、存储单元:

本文先从存储单元讲起,电脑中的存储器被分为若干个存储单元,每个存储单元(一个字节也就是8个二进制位)会被编号,就像街道的号码,比如某某街多少号,比如一个存储器有64字节可以编号为0~63,CPU就是通过这些编号(存储单元地址)来定位读写内存中的数据,比如CPU要读数据,那么先通过地址总线来定位内存单元,比如16位结构的CPU要读取地址为00008H开始的两个字节的数据,CPU会通过输入输出电路将00008H信息送到地址总线上,而后存储芯片收到通知后将会把00008H开始的两个字节通过数据总线送入CPU中,最后送达CPU的寄存器中作相应的处理,不能再扯,否则越扯越远,还是言归正传吧!

二、常量:

顾名思义就是在程序运行过程中不可改变的量,分为整形常量、实型常量、字符型常量(字符常量、字符串常量),常量又分为,直面常量,如98.8,98,'s',"aaaa"等,符号常量是以关键字define来定义的,如#define PI 3.1415,当然了要是声明变量前加上const关键字,也相当于常量,不变的变量。也就是常量所占用的存储单元只能被读,不能被写。

三、变量:

变量就是在程序运行期间可以改变的量,每一个变量都必须为其声明类型,而每一个类型的变量都有其格式和行为。变量一般声明为,类型 变量名,任何变量都应该有自己的变量名,且在内存中占有存储空间,而且变量在内存中的大小,取决于变量的类型。变量在使用前必须要定义,每一个变量都有其对应的地址。

变量类型:变量的类型分为整型变量(有符号、无符号),实型变量、字符型变量、指针型变量等。

变量的值是可以被修改的,每一个变量在内存中对应一段地址空间,比如在32位机器上,基本整型int x的长度为32位,在内存中占用连续的四个存储单元,比如上面地址00008H到0000BH内就存储着变量x的数据,变量名x就代表这地址空间,因为变量可变,所以这段地址可读可写。但是在程序中你并不需要知道分配到那块内存中,地址是什么,你只需要了解即可。

大家可以想一想,要是把上面的x类型转换成long、double、float、char等类型那么内存中的那四个单元数据是否发生变化?答案是只要数据不改变,类型改变不会影响到内存中数据的变化。

变量的存储类别根据产生时间上分为静态(程序运行分配固定的存储方式)跟动态(程序在运行期间根据需要动态的分配存储空间)。

变量的存储形式:auto(自动)变量、static(静态)变量、register(寄存器)变量、extern(外部)变量。

auto变量:

函数中局部变量,函数调用时系统会为其分配空间,一旦函数执行结束系统就会释放该内存空间,下次再执行该函数时系统会重新为其分配内存空间,重新对其初始化。一般情况下,只要变量类型前面不加任何修饰的变量,都默认为自动变量。

测试程序:

#include<stdio.h>

int add(){

auto int x=1;

x=x+1;

return x;

}

int main(){

int x1=add();

int x2=add();

printf("x1=%d",x1);

printf("x2=%d",x2);

}

结果为x1=2,x2=2;

static变量:

静态变量在整个程序运行期间不释放,而且静态变量只在编译期间赋初值,只赋值一次,尽管作用域跟自动变量一样只限于函数之中,但是在语句执行期间,静态变量将始终保持它的值,在以后得运行过程中将保持上一次执行后的值。

把上面得测试程序auto改成static,最后得到运行结果x1=2,x2=3。

register(寄存器)变量:

因为寄存器的读写速度比内存速度快,为了提高运行效率可以将变量直接放入CPU的寄存器中,但是实际上编译器可以忽略register对变量的修饰。而且要想有效的运用register关键字,必须要了解处理器的内部结构,寄存器数量,种类以及工作方式,而且不同的计算机可能有所不同,所以register变量对C程序员作用不大。

extern变量:

外部变量,在函数外部定义,它的作用域从定义开始到程序文件结束,都有效,但是如果想在作用域之外或定义之前使用该变量,那么就要使用关键字extern了,一旦有这样的声明,就可以在作用域外合法的引用该变量了。具体什么时候需要使用extern变量,要根据具体情况而定。

本文就讲到此,下篇继续。

标签: #c语言中合法常量的定义是什么 #c语言中常量用什么表示 #在c语言中的实型变量 #c语言中怎么判断常量是否合法 #下列符合c语言语法的实型常量