目录

    • 前言
    • 一,什么是C语言
    • 二,第一个c语言程序
    • 三, 数据类型
    • 四,变量,常量
    • 五,字符串
    • 六,转义字符
    • 七,注释
    • 八,操作符
    • 九,关键字

前言

学习c语言是一项非常系统的工程,要循序渐进,以下文章只是初识c语言,就是简单认识一下c语言,从简单的认识c语言,由浅入深,学习一门编程语言是一条艰辛与快乐共存的一条路,一定要坚持下去 。
首先对c语言有一个简单的认识,再对这些基础的知识进行扩展,进行更加细致的学习。

一,什么是C语言

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易
的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语
言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的
C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超
级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制
定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8
日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标
准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉
字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

二,第一个c语言程序

#includeint main(){ printf("Hello word"); return 0}

这段代码的功能是在屏幕上打印一个 “Hello word”。

代码解析;
第一行:头文件,在使用c语言自带的库函数之前一定要包含对应的 ,“头文件”。
第二行:main函数,在c语言中main函数是程序的入口,程序是从main函数开始执行的,main函数在程序中只能存在一个。
第三行:printf,printf是一个库函数 – c语言编译器提供的一个现成的函数,直接可以使用,其功能就是在屏幕上打印数据。
第四行:return 0 – 返回值。

这就是第一个c语言程序的内容;同学们有没有get到呢?

三, 数据类型

char //字符数据类型short//短整型int //整形long //长整型long long//更长的整形float//单精度浮点数double//双精度浮点数

int类型
数据类型大小是 4 字节,能表示的数值范围是
-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %d ,使用格式为 int 名 = 值;

short类型
数据类型大小是 2 字节,能表示的数值范围是
-2^(16-1) – 2(16-1) -1 (即 -32768 ~ 32767)
打印类型是 %hd ,使用格式为 short 名 = 值;

long类型
数据类型大小是 4 字节,能表示的数值范围是
-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %ld ,使用格式为 int 名 = 值;

long long类型
数据类型大小是 8 字节,能表示的数值范围是
-2^(63) ~ 2^(63)-1 (这个数足够大了)
打印类型是 %lld ,使用格式为 long long 名 = 值;

单精度浮点型(float)
单精度浮点型的大小是 4 字节
float v1 = 4.345;
unsigned float v1 = 4.345; 无符号的 float 数据
格式匹配符是:%f , 默认保留 6 位小数。

双精度浮点型(double)
双精度浮点型的大小为 8 字节
double v2 = 5.678;
unsigned double v2 = 5.678; 无符号的 double 数据

当然在c语言里面,肯定不止这些数据类型,比如在c99里面还引入了:Bool(布尔),long double

各种c语言数据类型在内存中所占空间的大小(单位:字节)

注:sizeof – 是一个操作符,是计算类型 / 变量所占内存空间的大小。
注:%d – 是一10进制的形式打印一个整数 , \n – 是换行

四,变量,常量

变量和常量在c语言中就是一个容器,通常是一块内存。
生活中有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资等等)
不变的值,在c语言中用常量的概念来表示,变化的值用变量来表示。

4.1定义变量的方法

int age = 150;float wei = 42.1f;char ch ='w';

方法如下:
类型 变量名;
类型 变量名 = 初始值 (最好给一个初始值)

4.2变量的命名
只能由字母(包括大写和小写)、数字和下划线( _ )组成。
不能以数字开头。
长度不能超过63个字符。
变量名中区分大小写的。
变量名不能使用关键字。
起名字是非常讲究的,最好要有意义。

4.3变量的分类、
局部变量 ;函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量
局部变量出现在三种地方:
(1)在函数的开头定义的变量
(2) 在函数内的复合语句内定义的变量
(3)形式参数

全局变量; 在函数外部定义的变量就是全局变量或外部变量;全局变量为该源文件中所有函数所共有,它的作用范围是从变量定义的位置到源文件结束

#include int a=20; //全局变量int main(){ int a=10//局部变量 printf("a=%d",a); return 0;}

总结:原则上变量名尽量不要冲突,当全局变量和局部变量的名字冲突的情况下,局部优先。

4.4变量的使用
写一个代码算两个数的值

#include int main(){int num1 = 0; int num2 = 0;int sum = 0;printf("输入两个操作数:>");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("sum = %d\n", sum);return 0;}

注;scanf是一个输入函数。

4.5变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的而限定这个名字的可用性的代码范围就是这个名字的作用域。

  1. 局部变量的作用域是变量所在的局部范围。
  2. 全局变量的作用域是整个工程。
    生命周期
    变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
  3. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  4. 全局变量的生命周期是:整个程序的生命周期。

4.6常量
常量顾名思义,就是一个不变的量,在生活中我们会发现有很多值是不会发生改变的,这种量在c语言中我们就称为“常量”。
常量在c语言中的定义和变量还是有差距的。
常量分为以下几种
1.字面常量
2.coust修饰的常变量
3.#define定义的标识符常量
4.枚举常量
以下是常量的使用

#include //举例enum Sex{MALE,FEMALE,SECRET};//括号中的MALE,FEMALE,SECRET是枚举常量int main(){//字面常量演示3.14;//字面常量1000;//字面常量 //const 修饰的常变量const float pai = 3.14f;//这里的pai是const修饰的常变量pai = 5.14;//是不能直接修改的! //#define的标识符常量 演示#define MAX 100printf("max = %d\n", MAX); //枚举常量演示printf("%d\n", MALE); printf("%d\n", FEMALE);printf("%d\n", SECRET);//注:枚举常量的默认是从0开始,依次向下递增1的return 0;}

五,字符串

“Hello word”

像这种由双引号引起来的一系列字符,在c语言中叫做字符串。
1.字符串所占内存空间
在c语言中,字符串的结束标志是一个‘\0’,的转义字符。在计算字符串长度的时候’\0’,不算字符串的长度。
那我们直接上代码展示吧;

我们再来看一个代码就能说明’\0’,的重要性。

在这个代码中,ch1没有定义’\0’,程序就会一直往后读,直到找到’\0’,所以会产生一个随机值。
注:strlen是用来求字符串长度的。
2.字符串的初始化
为了保存字符,我们将每一个字符都一 一赋值不是一件简单的事情。
我介绍两种初始化方式

char str1 []={'a','b','c','\0'}char str2 []="abc"

通过这种方式初始化会更加简洁也更加常用。

六,转义字符

转义字符 – 转变它原来的意思

\” />

用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。如:\130表示字符X
\xdddd表示2个十六进制数字。如:\30表示字符0

在这里简单介绍一下转义字符的用法
如果说我们想在屏幕上输出”c:\tset\test.c“这样一串字符
正常来说我们可以这样写


为什么会出错呢?
这里就涉及到了转义字符,’\t‘会被解释成水平制表符,我们可以加一个’\‘,防止被解释为一个转义序列符。

七,注释

  1. 代码中有不需要的代码可以直接删除,也可以注释掉
  2. 代码中有些代码比较难懂,可以加一下注释文字
  3. 注释有两种风格:
    C语言风格的注释 /xxxxxx/
    缺陷:不能嵌套注释
    C++风格的注释 //xxxxxxxx
    可以注释一行也可以注释多行。

八,操作符

在这样只是简单认识一下操作符,分别有哪些类型的操作符,后期的文章会做详细说明。
算数操作符

+ - * / %

移位操作符

>> <<

位操作符

& ^ |

赋值操作符

= += -= *= /= &= ^=|= >>=<<=

单目操作符

!逻辑反操作-负值+正值&取地址sizeof操作数的类型长度(以字节为单位)~对一个数的二进制按位取反--前置、后置--++前置、后置++*间接访问操作符(解引用操作符)(类型)强制类型转换

关系操作符

>>=<<=!=用于测试“不相等”==用于测试“相等”

逻辑操作符

&& 逻辑与||逻辑或

条件操作符

exp1 " />: exp3

逗号表达式

exp1, exp2, exp3, …expN

下标引用、函数调用和结构成员

[] () . ->

九,关键字

c语言中提供了非常丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。
可以大致可分为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。
1、数据类型关键字(12个):
(1) char :声明字符型变量或函数
(2) double :声明双精度变量或函数
(3) enum :声明枚举类型
(4) float:声明浮点型变量或函数
(5) int: 声明整型变量或函数
(6) long :声明长整型变量或函数
(7) short :声明短整型变量或函数
(8) signed:声明有符号类型变量或函数
(9) struct:声明结构体变量或函数
(10) union:声明共用体(联合)数据类型
(11) unsigned:声明无符号类型变量或函数
(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
2、控制语句关键字(12个):
A. 循环语句
(1) for:一种循环语句
(2) do :循环语句的循环体
(3) while :循环语句的循环条件
(4) break:跳出当前循环
(5) continue:结束当前循环,开始下一轮循环
B. 条件语句
(1) if: 条件语句
(2) else :条件语句否定分支(与 if 连用)
(3) goto:无条件跳转语句
C. 开关语句
(1) switch :用于开关语句
(2) case:开关语句分支
(3)default:开关语句中的“其他”分支
D. 返回语句
return :子程序返回语句(可以带参数,也看不带参数)
3、存储类型关键字(4个)
(1)auto :声明自动变量 一般不使用
(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)
(3)register:声明寄存器变量
(4)static :声明静态变量
4、其它关键字(4个):
(1)const :声明只读变量
(2)sizeof:计算数据类型长度
(3)typedef:用以给数据类型取别名(当然还有其他作用
(4)volatile:说明变量在程序执行中可被隐含地改变c