C语言的概述及C的数据类型

一、C语言概述

1.C语言的诞生

2.C语言的特点

3.嵌入式C的使用

二、C的数据类型

1.什么是数据类型

2.各数据类型的字节长度和指针变量的字节长度

3.变量及变量的特点

4.右左法则及举例

5.sizeof()和strlen()

一、C语言概述

1.C语言的诞生

C语言是在1978年由丹尼斯.里奇与布莱恩·科尔尼干一起出版了名著《C程序设计语言》时发表诞生的。目前C的发展经历了以下的过程

●在1972年,美国贝尔实验室的
D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

●《可移植的C语言编译程序》的发布,推广了unix系统,于1978年,C语言正式发布,同时著名的书籍《The
C Programming Language》发布。在之后,ANSI 在这本书的基础上制定了C语言标准。

●于1990年,
ISO接受了 C 为I SO C 的标准(ISO9899-1990)。并于1994年,修订了C语言标准。5年之后, ISO对前版本做了修改,此次也修改了C语言的标准,增加了一些需要的功能。于 2001与2004,这两年发生了 两次技术修改。

●目前流行的C语言编译系统大多是以ANSI
C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则又略有差别。

2.C语言的特点

.C语言运用广泛,目前在许多编译器中都可以实现:

●具有出色的可移植性,能够在多种不同的体系结构的软/硬件平台上运行。

●具有简洁紧凑、使用灵活的语法机制,并能直接访问硬件

●具有很高的运行效率

3.嵌入式C的使用

3.1嵌入式使用C语言开发的原因:在嵌入式操作系统的内核中主要由C语言实现,程序员进行开发时需要向内核中添加新的功能,且C能够直接访问硬件,移植性好,效率高的特点,所以使用C进行开发。虽然汇编语言的效率相比于C语言高,但是它不能直接实现一些比较复杂的功能如for循环等,通常汇编语言在对简单硬件的初始化中进行使用。

二.C的数据类型

1.什么是数据类型

数据类型就是数据集合的划分,不同的数据类型对CPU具有不一样的意义,所以一定要注意相应变量数据类型的定义和转换。          数据类型又划分为两大类:基本数据类型和复合数据类型。

●复合数据类型包括 数组,结构,联合,枚举,指针

●基本数据类型包括 空类型,字符型,数值型

●而数值型又包括实型(单精度实型,双精度实型),整型(短整型,整型,长整型)

2.各数据类型的字节长度和指针变量的字节长度

2.1.在不同的编译系统中,编译系统对各数据类型分配字节数可能不同,对此我们在编写程序前必须对所用的编译系统有相关的了解。例如在gcc编译中各数据类型字节长度为:

int:4个字节;short:2个字节;long:4个字节:char:1个字节;float:4个字节

2.2指针的字节长度:通常指针的字节长度都是固定的,且长度有操作系统所决定。指针中存放的元素为地址,而不同的操作系统有其固定的地址长度,因而指针的字节长度也就固定。例如:

3.变量及变量的特点

3.1什么是变量

在其值的作用域内可以改变的量称为变量。一个变量应该有一个名字,在内存占据一定的存储空间。

3.2变量的三大特点:

●变量的数据类型:主要说明变量占用内存空间的大小如int型。

●变量的作用域:变量的有效性的范围。

●变量的存储类型:变量在内存中的存储方式。不同的存储方式影响变量在内存的生存周期。

3.3变量的声明和定义

定义:创建一个变量,为其分配内存空间,并为它取变量名,一个变量只能定义一次。

声明:告知编译器这个变量名已经匹配在一块内存上了,但是并未为其分配内存。

3.4变量声明和定义的两种情况:

●定义性声明:需要建立存储空间。例如:int a在声明时就已经建立了存储空间。

●引用性声明:不需要建立存储空间。例如:extern
int a其中变量a是在别的文件中定义的。

3.5变量的存储区域的划分

①栈空间:局部变量,函数形参,自动变量

②堆空间:malloc ralloc calloc 分配空间

③ 数据段分为bbs,rodata,data。

●bss:保存未初始化的全局变量

●rodata:常量

●data(静态数据区):全局变量,static修饰变量

④数据段代码段 即数据区

栈空间特点:先进后出,管理权限:系统

堆空间特点:先进先出,管理权限:用户

3.6

●全局变量与局部变量的区别

①存放位置

局部变量存放于栈空间,全局变量存放在 数据段的data(静态数据区)区域

②赋值

当我们定义变量时,如果定义为全局变量,系统会自动把变量初始化为默认值(内置类型初始化为系统默认值,自定义类型调用相应的初始化函数进行初始化),而定义为局部变量时,系统不会自动初始化变量,我们必须手动对变量进行初始化(无论是内置类型还是自定义类型),否则得到的结果可能和我们预期的不一致,甚至导致程序出错

③何时释放

全局变量:在编译时分配,在main结束时释放;

局部变量、形参:在函数调用时分配,在函数返回时释放

④作用域

●全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。

●静态局部变量具有局部作用域。它只被初始化一次,自从第一次初始化直到程序与你新内阁结束都一直存在,他和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

●局部变量也只有局部作用域,他是自动对象,他在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用结束后,变量就被撤销,其所占用的内存也被收回。

●静态全局变量也具有全局作用域,他与全局变量的区别在于如果程序包含多个文件的话,他作用于定义它的文里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同的静态全局变量,他们也是不同的变量。

4.右左法则及举例

4.1.右左法则:从最内部的括号(变量)开始阅读声明,先向右看,再向左看,碰到一个括号时调转阅读方向,括号内的内容阅读完毕则跳出括号。直到全部阅读结束为止。例如:

(1)int a;            a 整型变量

(2)int *a;            p 整型指针变量

(3)int **a;           p指针变量p,p指向另一指针,另一指针指向整型数

(4)int *a[10];         a是有十个元素的数组,里面存放着指针变量,这些指针指向整型(整型指针数组)

(5)char (*a)(int);      a是一个指针变量,它指向一个形参为int型,返回值为char型的函数(char型函数指针变量)

(6)int (*a[10])(int);    a是一个指针数组,该指针指向一个形参为int型,返回值为int型的函数

(7)int *(* (*fp) (int))[10];fp是一个函数指针变量,该函数是一个形参为int型,返回值为数组指针的函数,该数组指针指                       向整型指针

(8)void *(*c)(char ,int (*)());c是一个函数指针变量。该函数是一个形参为char,另一形参为形参为空返回值为int型的函                        数指针变量且返回值为void的函数。

5.sizeof()和strlen()

5.1.sizeof(): sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。切记sizeof()是一个运算符而不是一个函数。例如:

sizeof()在对变量的存储大小进行计算时sizeof()可不加上括号,sizeof()在对数据类型的存储大小进行计算时sizeof()不能省略括号。

5.2.strlen():从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符‘\0‘为止,然后返回计数器值(长度不包含‘\0‘),实质上是一个C函数。

时间: 2024-11-05 20:41:02

C语言的概述及C的数据类型的相关文章

4_Shell语言———脚本概述

一.初识脚本 简单说,脚本就是数条可执行语句的罗列.例如我们将以下可执行命令粘贴至first.sh 这个文件中: UserName=user1 mkdir /users useradd -d /users/$UserName $UserName echo $UserName | passwd --stdin $UserName 这样first.sh就是一个脚本,sh用来标注这是一个shell脚本,它能够使用以下命令执行: # bash first.sh 二.脚本的执行 上面的例子中我们使用了ba

Java语言支持的8中基本数据类型

Java语言支持的8中基本数据类型是: byte(字节型).short(短整型).int(整型).long(长整型).float(单精度浮点型).double(双精度浮点型).boolean(布尔型).char(字符型) 具体可分为四类: 整型 byte short int long 浮点型 float double 逻辑型 boolean(它只有两个值可取 true false) 字符型 char 表格如下: 基本类型 占据空间大小 取值范围 默认值 boolean 不确定 true/fals

【剑仙教程】易语言的结构体。自定义数据类型。

1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言的IDE,IDE,是开发环境. 点击“插入”菜单,选择“数据类型” 这时,代码编辑框就会增加一个数据类型的窗口. 把“数据类型1”命名为“精易_座标”,勾选“公开项”. 这样,一个 精易_座标 的类就做好了. . 再按回车键,给这个类增加2个成员. x 整数型 y 整数型 . 访问时,直接写代码就O

xml语言的概述

1.1 xml语言的概述1.1.1 xml介绍xml语言是具有结构性的标记语言, 可以灵活的存储一对多的数据关系.举例:以上这种数据, 如果通过我们学习的集合来存储的话, 需要通过多个集合的嵌套使用.那么很显然, 数据存储的过程就非常麻烦, 但是我们今天所学习的xml文件就可以很简单的存储这种一对多的数据至于怎样存储, 我们稍后会详细讲解, 目前需要掌握的是关于xml的使用场景用来存储一对多的数据另外, xml还有一些其他的应用方面: 之前学习过properties配置文件, 通过这种配置文件,

go语言基础(main函数、数据类型)

go语言基础(main函数.数据类型) 1.Go语言介绍 Go语言是云计算时代的c语言 c和c++这类语言提供了很快的执行速度,而Rudy和python这类语言则擅长快速开发.Go语言则介于两者之间,不仅提供了高性能的语言,同时也让开发更快速 优势 部署简单,可直接编译成机器码.不依赖其他库,部署就是扔一个文件上去就完成了 静态类型语言(c是静态语言.python解释性语言),但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,

语言基础:C#输入输出与数据类型及其转换

今天学习了C#的定义及特点,Visual Studio.Net的集成开发环境和C#语言基础. C#语言基础资料——输入输出与数据类型及其转换 函数的四要素:名称,输入,输出,加工 输出 Console.Write("这是我的第一个程序");//不换行,(不要漏掉:)(所有的符号全都用英文)(方法,也就是函数后面必须跟括号) Console.WriteLine("第二句");//输出这句后会换行 “这是我的第一个程序”后不换行,紧跟“第二句”,“第二句”换行,光标进入

C语言---程序的一般形式、数据类型、常量变量、运算符、表达式、格式化输入输出

1. 程序的一般形式 (1)注释 ① 分类:单行注释( // ): 注释一行.多行注释( /**/ ): 在这个区间内,都属于多行注释,可以换行. ② 作用:提示代码的作用,提示思路   不写注释的后果:出来混总是要还的. ③ 单行注释不能换行 (2) #include  #import ① 导入文件,系统提供类库文件中包含一些功能函数,如果想在某个文件中使用,必须导入需要的文件. ② stdio  标准输入输出  standard input output (3) main  函数,又称主函数

c语言入门-概述

起源 1950晶体管计算机年代,欧美计算机学家合力所组成的联席大会共同开发 ALGOL(ALGOrithmic Language),也称为A语言. 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言. 1967年,英国剑桥大学的 Dennis MacAlistair Ritchie(丹尼斯·麦卡利斯泰尔·里奇) 对 CPL语言做了简化,推出了 BCPL (Base Combined Programming Langurage

计算机的概述与C语言的概述

计算机的基本原理是存储程序和程序控制.冯诺依曼原理. 计算机系统由硬件系统和软件系统两大部分组成. 硬件系统:运算器和控制器(处理器CPU) 存储器  输入设备和输出设备(io设备). 软件系统:操作系统和应用软件. 硬件的基本组成:硬盘 内存 CPU 各个部件之间运作协调,cpu与内存间读取指令,内存与硬盘间装载软件. 软件:指令的集合 开发软件:写出能控制计算机的指令 计算机语言 机器语言   0 1 效率高  可读性差 汇编语言  指令命令  可直接访问和控制硬件设备 执行快  不可移植