一、什么是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
生万物
编程之本
长远
IT
职业发展的首选
C
语言是母体语言,是人机交互接近底层的桥梁
学会
C/C++
,相当于掌握技术核心
知识点一竿子打通。
IT
行业,一般每
10
年就有一次变革
近
50
年间,在
TIOBE
排行榜中,
C/C++位置长期霸占前三名,没有丝毫撼动,可谓经典永不过时
二、数据类型
char
//
字符数据类型
short
//
短整型
int
//
整形
long
//
长整型
long long
//
更长的整形
float
//
单精度浮点数
double
//
双精度浮点数
每种类型的大小是多少?
#include <stdio.h>
int
main
()
{
printf
(
"%d\n"
,
sizeof
(
char
));
printf
(
"%d\n"
,
sizeof
(
short
));
printf
(
"%d\n"
,
sizeof
(
int
));
printf
(
"%d\n"
,
sizeof
(
long
));
printf
(
"%d\n"
,
sizeof
(
long long
));
printf
(
"%d\n"
,
sizeof
(
float
));
printf
(
"%d\n"
,
sizeof
(
double
));
printf
(
"%d\n"
,
sizeof
(
long double
));
return
0
;
}
运行结果
1、char:字符数据类型,用来修饰字符,其大小为1字节。
2、shot:短整型,其大小为2字节。
3、int:整形,其大小为4字节。
4、long:长整形,其大小为4字节。
5、long long:更长的整形,其大小为8字节。
6、float:单精度浮点型,用来修饰单精度的数字,比如3.1,5.4等,其大小为4字节。
7、double:双精度浮点型,用来修饰双精度的数字,比如,3.14,5.21等,其大小为8字节。
8、long double:长双精度浮点型,大小为8字节。
三 、变量、常量
顾名思义
变量:变化的量叫变量
常量:恒定不变的量叫常量
3.1定义变量的方法
数据类型 变量名字 =变量数值;
注意这里的等号为赋值 ==才是等于
例子:
int
age
=
150
;
float
weight
=
45.5f
;
char
ch
=
'w'
;
3.2变量的命名
只能由字母(包括大写和小写)、数字和下划线(
_
)组成。
不能以数字开头。
长度不能超过
63
个字符。
变量名中区分大小写的。
变量名不能使用关键字。
3.3变量的分类
局部变量
全局变量
注:当局部变量和全局变量同名的时候,局部变量优先使用。
3.4 变量的作用域和生命周期
作用域
作用域(
scope
)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效
/
可用
的而限定这个名字的可用性的代码范围就是这个名字的作用域。
1.
局部变量的作用域是变量所在的局部范围。
2.
全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1.
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2.
全局变量的生命周期是:整个程序的生命周期
3.5 常量
C
语言中的常量和变量的定义的形式有所差异。
C
语言中的常量分为以下以下几种:
字面常量
const
修饰的常变量
#define
定义的标识符常量
枚举常量
特殊例子:
变量被称为
const
修饰的常变量,
const
修饰的常变量在
C
语言中只是在语法层面限制了
变量
不能直接被改变,但是 变量
本质上还是一个变量的,所以叫常变量
四、 字符串+转义字符+注释
这种由双引号(
Double Quote
)引起来的一串字符称为字符串字面值(
String Literal
),或者简称字符串。“hello world”
注:字符串的结束标志是一个
\0
的转义字符。在计算字符串长度的时候
\0
是结束标志,不算作字符串内容。
#include <stdio.h>
//
下面代码,打印结果是什么?为什么?(突出
'\0'
的重要性)
int
main
()
{
char
arr1
[]
=
"bit"
;
char
arr2
[]
=
{
'b'
,
'i'
,
't'
};
char
arr3
[]
=
{
'b'
,
'i'
,
't'
,
'\0'
};
printf
(
"%s\n"
,
arr1
);
printf
(
"%s\n"
,
arr2
);
printf
(
"%s\n"
,
arr3
);
return
0
;
}
4.2 转义字符
转义字符顾名思义就是转变意思。
下面看一些转义字符。
转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd d d d表示
1~3
个八进制的数字。 如:
\130
表示字符
X
\xdd d d表示
2
个十六进制数字。 如:
\x30
表示字符
0
用法实例
#include <stdio.h>
int
main
()
{
//
问题
1
:在屏幕上打印一个单引号
'
,怎么做?
//
问题
2
:在屏幕上打印一个字符串,字符串的内容是一个双引号
“
,怎么做?
printf
(
"%c\n"
,
'\''
);
printf
(
"%s\n"
,
"\""
);
return
0
;
}
五、 注释(方便你我他)
1.
代码中有不需要的代码可以直接删除,也可以注释掉
2.
代码中有些代码比较难懂,可以加一下注释文字
六、选择语句
使用if语句进行选择满足if()的条件则进入{}内执行相应语句否则进入else{}内的语句
#include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a+b>c && a+c>b && b+c>a) { if(a==b || a==c || b==c) { if (a==b && a==c) printf("构成等边三角形\n"); else printf("构成等腰三角形\n"); } else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); return 0; }
七、循环语句
while
语句
for
语句
do ... while
语句
八、函数
函数的特点就是简化代码,代码复用。
就像工厂的流水线一样,为了一两件产品开动流水线是不值得的,大量重复的制作一件物品才是流水线的意义。
多次调用函数可以做到不用重复编写节约时间空间的优点
九、数组
一组相同类型元素的集合
9.1数组定义
int
arr
[
10
]
=
{
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
};
//
定义一个整形数组,最多放
10
个元素
9.2 数组的下标
C
语言规定:数组的每个元素都有一个下标,下标是从
0
开始的。
数组可以通过下标来访问的。
9.3数组的使用
定义数组
定义变量
用for循环持续输入
十、 操作符
十一 常见关键字
再给变量取名时切记不能用关键字
11.1关键字 typedef
typedef
顾名思义是类型定义,这里应该理解为类型重命名。
typedef加工出来的都是类型,而不是变量
11.2 关键字static
在
C
语言中:
static
是用来修饰变量和函数的
1.
修饰局部变量
-
称为静态局部变量
2.
修饰全局变量
-
称为静态全局变量
3.
修饰函数
-
称为静态函数
static修饰局部变量改变了变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。
一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使
用。
十二、 指针
12.1 内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是
1
个字节
。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该
内存单元的地
址
。
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
12.2定义指针变量
int
num
=
10
;
int *
p
;
//p
为一个整形指针变量
p
= &
num
;
12.3指针的使用实例:
#include <stdio.h>
int
main
()
{
int
num
=
10
;
int *
p
= &
num
;
*
p
=
20
;
return
0
;
}
12.4指针变量的大小
指针大小在32位平台是4个字节,64位平台是8个字节
十三、结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
它可以使多项融合到一起,比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
例子:
struct
Stu
{
char
name
[
20
];
//
名字
int
age
;
//
年龄
char
sex
[
5
];
//
性别
char
id
[
15
]
;
//
学号
};
结构体的初始化:
//
打印结构体信息
struct
Stu s
=
{
"
张三
"
,
20
,
"
男
"
,
"20180101"
};
//.
为结构成员访问操作符
printf
(
"name = %s age = %d sex = %s id = %s\n"
,
s
.
name
,
s
.
age
,
s
.
sex
,
s
.
id
);
//->
操作符
struct
Stu
*
ps
= &
s
;
printf
(
"name = %s age = %d sex = %s id = %s\n"
,
ps
->
name
,
ps
->
age
,
ps
->
sex
,
ps
-
>
id
);