概述
目录
一、C语言简介
二、第一个C语言程序-------Hello World
三、变量及常量
1、变量
2、局部变量和全局变量
3、变量的作用域和生命周期
4、变量的命名规则
5、常量
5.1、字面常量
5.2、const修饰的常变量
5.3、#define定义标识符常量
5.4、枚举类型
四、基本数据类型
五、字符串及字符
1、字符串
2、字符
1.1、ASCII码表
1.2、转义字符
一、C语言简介
C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。
C语言最初是由机器语言发展为B语言,再之后由以B语言为基础发展而来的,C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。
C语言发展之初,许多使用c语言的公司各自对c语言进行优化和修改,导致C语言没有一个具体的标准。C社区意识到需要一个更全面的标准,鉴于此美国国家标准协会(ASCI)开发了一套新标准(ASCI C)该标准定义了C语言和C标准库。再之后1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159-1989,简称“C89”,不过人们也习惯称其为“ANSI C”。C89在1990年被国际标准化组织(International Standard Organization,ISO)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899:1990也通常被简称为“C90”。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。 [6] 在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899:2011,简称为“C11”。
C语言作为一门计算机编程语言,适合刚踏入编程领域的新人,但我们不能只单单学习c语言这一门语言而已,后续为自己定位一个前景发展方向,并沿着该方向学习下去。下来我将逐一介绍入门C语言的一些基础知识。
二、第一个C语言程序-------Hello World
作为每一个学习编程的人,多多少少刚开始的程序基本都是HelloWorld。HelloWorld YYDS!
我们自己所编写的代码是一个.c的文件,但最终是编译成一个.exe文件(可执行文件),中间会经过编译器编译(编译中又经过预编译,编译,汇编三个步骤),链接后才转换成可执行文件。写c语言代码,我选择的VS2019。VS2019是集成开发环境(集多种功能于一体,有编辑、编译、链接、调试功能),其中调用的是cl.exe编译器。常见的编译器有gcc、Clang、MSVC。
(1)第一步:在写第一个代码前,我们需要新建一个工程项目。
选择一个空项目
创建之后,进入VS里的界面如下:
(2)第二步:我们需要在左侧解决方案里创建一个源文件,再进行编辑代码。
在命名的时候建议将后缀改为.c
如果在自己的VS界面里没有看到右侧的解决方案,可以从右上角的视图里显示出来。
(3)第三步:进行编写
按crtl+F5对代码进行运行,运行结果为:
可能刚看到这个代码,你们也许有很多疑问,但接下来会对这些内容一一讲解。
写c语言代码的时候,首先要知道main函数,main函数是程序的入口,程序是从main函数的第一行开始执行的,main函数是主函数有且仅有一个。
对于main(),在c语言里称之为主函数,而每一个函数前回带有一个返回数据类型,此处的int是整型。那我们能不能把int省略,答案是可以,函数会默认返回int,但建议别这么做,要返回什么类型就写什么类型。那可以不返回任何类型吗?把int改为void可以将该函数改为无返回类型,C99之前main函数是直接改int为void,但现在没人这么写了。老老实实用int吧!
printf是一个库函数,库函数的使用得包含一个头文件<stdio.h>,此处stdio拆分出std,i,o分别是标准库,输入,输出三个意思,对应标准输入输出头文件。那要怎么包含?只要用#include 对其包含即可
三、变量及常量
1、变量
变量即可变的量,在程序中可以随时改变的值。例如一些数据,我们的年龄,薪资之类可变的量称为变量。在c语言中,我们经常会对一些变量进行赋值和初始化,什么是赋值和初始化呢?
每一个变量都有其对应的数据类型,而在给该变量定义类型后,需要对其赋值(赋给它一个数值)。在定义一个变量并赋值的过程称为初始化。
例如以下代码(定义了一个整型变量a):
那我们是否可以只定义变量,而不初始化呢?
不可以,我们在定义一个局部变量时,实际是在一个内存空间里创建了一个栈(换句话来说是一个存储值的地方),要是没有对其初始化,栈里所存储的该值所对应的值是系统默认初始化的一个随机值,但正常情况下编译后是会报错的。
下面用printf打印出未初始化的a。
2、局部变量和全局变量
局部变量可以理解成在主函数内部定义的变量为局部变量,而全局变量是定义在主函数外的变量
例如:
【注意】:
(1)局部变量优先级比全局变量高。比如同时定义一个变量a,全局变量定义为50,局部变量定义为25,打印出结果会是25.因为先定义a为50后,在主函数里定义会覆盖原先的50.
(2)main()函数花括号内定义的变量为局部变量,花括号外的为全局变量。
(3)C99标准前有一个规定:变量要创建在当前代码块的最前面;在C99标准之后的语法就支持了,变量在哪里使用,就在哪里定义。
3、变量的作用域和生命周期
作用域:
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性代码范围就是这个名字的作用域。说白了,作用域就是一个设定范围,就是你在哪里有权限,哪里就是你的作用域。
1、局部变量的作用域是变量所在的局部范围
2、全局变量的作用域是整个工程的
生命周期:
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段;
关于生命周期,main函数结束就是程序结束,我们可以理解成程序和main函数的生命周期是一样;作用域也有生命周期,离开了作用域,作用域里面的变量会销毁,出了作用域就用不了。
1、局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2、全局变量的生命周期是:整个程序的生命周期
此处,b的作用域是里面的花括号内的,出了花括号,就不在它的设定范围(作用域)了
而此处a定义在main里的设定范围内,它以下的语句都是它是设定范围;
全局变量的设定范围更大,任意地方都可以使用
4、变量的命名规则
我们必须给变量取一个合适的名字,就好像每个人都有自己的名字一样,否则就难以区分了。
(1)变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线“_”组成;
(2)变量名的长度不得超过255个字符;
(3)变量名不能是关键字;
5、常量
常量即是不变的量,在整个程序运行过程中没有变化的,称为常量。
C语言中常见常量有:
- 字面常量
- const修饰的常变量
- #define定义的标识符常量
- 枚举常量
-
5.1、字面常量
我们在程序中定义的什么,整型,浮点型,字符型等,都是字面常量。
5.2、const修饰的常变量
经const修饰后的变量的值,是无法再进行更改的。修饰之后的变量称为常变量,但其本质还是变量。
此处经修饰后,如果再对齐进行赋值,则会报错。
【注意】:
(1)在初始化数组的时候,里面下标标的是常量表达式,不能是变量表达,即使是改成const也不行,const修饰完后是变成常变量,本质上还是变量(数组是存储同一种数据类型多个元素的集合,可以看成是存储相同东西的容器)。
(2)VS2019不支持C99
5.3、#define定义标识符常量
#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。(后续会详细对该内容进行说明)
(1)格式:#define <宏名/标识符> <字符串>
(2)标识符/宏名有命名规则:一般用大写;宏定义末尾不加分号“ ;”
5.4、枚举类型
枚举,就是一一列举,将一些常量信息一一列举出来。
生活中有很多值是可以一一列举的,有些值不适合,例如性别:男,女,保密是可以列举出来。
下面代码是枚举类型的基本格式,枚举类型里的可能取值就是枚举常量,彼此用逗号分开。(注意花括号结尾要带分号)
枚举类型里的成员如果按整型打印出来,是以此按从0开始排序的。
四、基本数据类型
数据类型 | 所占字节大小 |
int(整型) | 4 |
short(短整型) | 2 |
long(长整型) | 4 |
long long(长整型) | 8 |
flaot(单精度浮点型) | 4 |
double(双精度浮点型) | 8 |
bool(布尔类型) | 1 |
char(字符型) | 1 |
以上的数据类型是我们以后会经常用到的。
所谓字节是什么?
字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。1个字节相当于8个bit。
数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制)
比如一个整型所占大小为4个字节,对应32个bit位,而每一个比特位只有1和0两种,那么int类型的取值范围可以认为是0~2^32,但在计算机中存储时,最高位也就是第32位是一个符号位(用来表示正负关系的,1表示为负,0表示为正),因此int类型真正的取值范围应为-1~-2^31和0~2^31-1.
其他数据类型也同理。(后续会对该部分进行讲解)
本章对每一个数据类型暂不做详细介绍,之后会在一个章节里详细讲解。
五、字符串及字符
1、字符串
"hello worldn"
像这种有双引号引起来的一串字符称为字符串字面量,简称为字符串。
输出字符使用 %c,输出字符串使用 %s。
【注意】:字符串的结束标志是一个‘ ’的转义字符,在用strlen()计算字符串长度的时候'