1. 什么是C语言?
- C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
2. 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
3. C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 - 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
2. 第一个C语言程序
-
开发工具:VS2013 / VS2019 -集成开发环境-集成了MSVC,这样的编译器 可以编写和编译C语言的代码!
-
新建项目
-
编写代码 hello world!
#include <stdio.h>
int main()
{
printf("hello world!\n");
return 0;
}
代码解释:
1 . #include <stdio.h> 包含一个stdio.h 的文件
2. stdio.h文件 standard input output 标准输入输出
3. main函数是程序的入口 一个工程中main函数有且仅有一个
4. printf 打印函数
5.int 返回值类型
- 运行结果
3. 数据类型
- char //字符数据类型
- short //短整型
- int //整形
- long //长整型
- long long //更长的整形
- float //单精度浮点数
- double //双精度浮点数
- 注意:存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
- 类型的使用:
char ch = 'w'; // 向内存申请1byte=8个bit位的内存来存储w int weight = 120; // 向内存申请4byte=32个bit位的内存来存储w int salary = 20000;
- 各数据类型在内存中的大小(单位byte)
1) sizeof函数 打印数据类型在内存中的大小
- 注意:长整形 long 在linux64操作系统中占8字节
- 注意:长整形 long 在linux64操作系统中占8字节
4. 变量、常量
生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)。
不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示
4.1 定义变量的方法
类型 变量名 = 变量值
int age = 150;
float weight = 45.5f;
char ch = ‘w’;
4.2 变量的分类
- 局部变量:定义在代码块( {} )之内的变量
- 全局变量:定义在代码块( {} )之外的变量
总结:#include <stdio.h> <br> int global = 2019; //全局变量 int main() { int local = 2018;//局部变量 //下面定义的global会不会有问题? int global = 2020;//局部变量 printf("global = %d\n", global); return 0; }
上面的局部变量global变量的定义其实没有什么问题的
当局部变量和全局变量同名的时候,局部变量优先使用。
建议不要定义为相同名称,容易产生误会导致bug
4.3 变量的使用
-
例:
- 注意:
C语言的时用到了“scanf”函数,在运行一段程序时报错,其报错内容为:错误 1 error C4996: ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
该错误产生原因:
scanf是标准C语言的标准库函数,可能会导致数组溢出或者缓冲区溢出,让黑客有可乘之机,从而发起“缓冲区溢出”攻击,具体原因
该错误解决方法为:
1、将scanf函数替换为scanf_s (不推荐,只能在VS中识别,不具有可移植性)
2、在代码第一行键入:#define_CRT_SECURE_NO_WARNINGS(推荐)
3.还有一种一劳永逸的方法为:打开VS安装路径下的D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcprojectitems 找到newc++file.cpp打开方式为记事本,将#define _CRT_SECURE_NO_WARNINGS粘贴在记事本上并保存,若保存失败则先保存至桌面后再替换回源文件,之后新建项目编程时就会出现该代码
- 注意:
4.4 变量的作用域和生命周期
-
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
-
- 局部变量的作用域是变量所在的局部范围( 变量定义的代码块{}之内 )。
- 全局变量的作用域是整个工程。
-
-
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
-
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
-
4.5 常量
- C语言中的常量和变量的定义的形式有所差异。
- C语言中的常量分为以下以下几种:
- 字面常量
const 修饰的常变量
#define 定义的标识符常量
枚举常量
- 字面常量
- 例:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> enum Sex { MALE, FEMALE, SECRET }; int main() { //字面常量演示 3.14;//字面常量 1000;//字面常量 //const 修饰的常变量 const float pi = 3.14f; //这里的pi是const修饰的常变量 pi = 5.14; //这里会报错,是不能直接修改的! //#define的标识符常量 演示 #define MAX 10 printf("max = %d\n", MAX); //输出 max = 10 //枚举常量演示 printf("%d\n", MALE); //输出 max = 0 printf("%d\n", FEMALE); //输出 max = 1 printf("%d\n", SECRET); //输出 max = 2 //注:枚举常量的默认是从0开始,依次向下递增1的 return 0; }
注:
上面例子上的 pi 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了变量 pi 不能直接被改变,但是 pi 本质上还是一个变量的,所以叫常变量。
- C语言中的常量分为以下以下几种: