搜索
写经验 领红包
 > 美食

c语言中的常量与变量是什么(c语言中的常量与变量的关系)

导语:C语言中的常量与变量

c语言中的常量与变量是什么(c语言中的常量与变量的关系)

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

一、存储单元:

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

二、常量:

顾名思义就是在程序运行过程中不可改变的量,分为整形常量、实型常量、字符型常量(字符常量、字符串常量),常量又分为,直面常量,如98.8,98,'s',"aaaa"等,符号常量是以关键字define来定义的,如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变量,要根据具体情况而定。

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

本文内容由小莉整理编辑!