C语言程序设计教程笔记_基本数据类型、常量、变量和表达式

来源:互联网 发布:镜子应用是什么软件 编辑:程序博客网 时间:2024/05/24 02:58

计算机程序涉及两个基本问题,一个是数据的描述,一个是动作的描述。

程序的主要任务就是对数据的处理。

数据以一定的数据形式存储,存放情况由数据类型决定。

C有4种基本数据类型和4种复杂数据类型。


数据类型概述


为什么引入数据类型的概念呢?因为针对不同的数据类型,计算机采用不同的存储方式并进行不同的处理。

数据对象的复杂程度决定数据类型的丰富程度。

数据类型的丰富程度决定了程序设计语言处理数据的能力。


基本数据类型


整型

Short

Unsigned shrot

Int

Unsigned int

Long

Unsigned long

C语言整形有十进制,八进制和十六进制3种表达形式。

Int a = 16;

Int b = 020;

Int c = ox1;

整型+L为长整型。

实型

C中的实数是数学中实数的子集。

C中实数有十进制和指数两种表达方式。

字符类型

单引号为字符,双引号为字符串。

一般字符,转义字符。


常量


常量和变量是相对的概念。常量值不能改变,变量值能改变。

变量代表一块内存。

变量可以在三个地方定义。

使用#define 标识符 常量数据定义常量。


变量


一般情况下要求每个函数数据独立,但有时候也希望各函数有较多的数据联系,甚至各文件之间共享数据,因此在程序设计中必须重视变量作用域。

变量定义:

变量的定义主要是为变量申请内存空间用。(编译器要管理该变量名字和申请该变量的内存大小)

变量的初始化:

变量的初始化主要为在申请到的内存中赋初值。(编译器要在该变量的内存中初始化初值,为后面使用该变量做准备,否则其内存中的值是随机的。)

变量的声明:

变量的声明是说明该变量已经被定义过,(编译器要在已经定义的表中查找该变量的位置)

变量的作用域

局部变量

形参是局部变量。

局部变量是函数内定义的变量,全局变量是函数外定义的变量。

在模块化程序设计中要求每个模块是独立的,一个模块中对数据的操作不能影响另一个模块的数据,否则一些变量将会失控。因此规定变量的作用域是数据独立的保证。

不同的函数中,变量可以重名。

局部变量和全局变量可以重名,在函数中,重名的全局变量不起作用。

全局变量

在函数外定义,所有函数共享的变量。使用extern关键字定义

外部变量

一个文件可以引用另一个文件的全局变量。引用前使用exterd声明,说明已经定义过此变量,不需要在为之分配内存。(两个文件中的全局变量能重名么?)

全局变量和外部变量本质上是一个东西。

C遵循先定义在引用的原则,如果变量定义在引用之后,那么必须在引用前声明,这一点和函数的引用一样。

全局变量可以加强函数模块之间的数据联系,但是又使函数以来这些变量,因此使函数的独立性降低,不利于程序的模块化。因此尽量不使用全局变量。

定义变量

在定义变量的时候应该考虑变量的数据类型,存储方式,作用域等属性。

C中通过定义自动变量,静态变量,全局变量确定存储方式。

变量的存储方式

变量有一个重要属性就是存储方式,分为静态存储和动态存储两种。静态存储:声明时就分配存储单元,并一直保持不变,知道程序结束。全局变脸就是静态存储方式的变量。动态存储:在程序执行过程中,使用时在分配内存,使用完毕立即释放。典型的是形式参数。可以看出,静态存储的变量是一直存在的,动态存储的变量是时而存在时而消失。

自动变量:

使用auto关键字定义。使用动态存储方式。C规定,函数内没有使用存储类型说明的变量默认为auto

自动变量的作用域在结构体内(函数或符合语句)。这是因为他的存储方式是动态的。在外部结构中调用的时候早已经释放了。

不同结构体内可以重名。

静态变量:

使用static定义。静态变量使用静态存储方式,但使用静态存储的变量不一定就是静态变量。

静态局部变量:

在函数内定义,声明周期为程序,作用域仍然是函数内。他的意义是第二次调用的时候可以保留上一次的值。

静态全局变量:限制全局变量的作用域为文件。

寄存器变量:

使用register关键字定义。动态变量存到动态内存,静态变量存到静态内存。寄存器变量存到CPU寄存器。不需要访问内存,直接访问寄存器。

只限于字符,整型,指针类型的局部变量。一般仅允许声明两个寄存器变量。

我对于变量的理解:变量是一个有名字的存储单元(有可能是在内存中,也可能是在cpu的寄存器中),可以通过这个名字来访问这片内存的值。可贵的是这片存储单元的值是可以改变的(可擦写的),这样我们就可是使用它完成各种功能。


运算符和表达式

算数运算符和算数表达式

C5种算数运算符 -+*/()%(取模)

%两边必须为整形数据

两个整数相除结果为整,两个数有一个为实型结果为double

字符型和数值型能混合运算,因为在计算机中字符是以一个字节的整形表示的


取负运算符

自增自减运算符

赋值运算符和赋值表达式

逗号运算符和求字节运算符

Sizeof(变量名)

条件运算符

? :

 

数据类型转换

此处待续

自动转换

赋值转换 

强制类型转换




原创粉丝点击