本人初学C语言,对各组成部分进行梳理、总结、分析,如下:
(一)C语言的定义及初始架构
1.什么是C语言?
C语言是计算机编程语言,简而言之,就是人与计算机沟通的语言,同时,它是面向过程的语言,广泛应用于底层软件开发。这里提到的底层软件开发,是指在电脑应用软件之下的功能开发,包括操作系统、驱动层、硬件等。C语言的发展历史可以追溯到二进制指令,而后为方便记忆,出现了汇编语言,也就是我们常说的助记符,后来又发展为B语言,最后有了现在的C语言。起初C语言的标准无法统一,各公司的数据无法转化,后来有了大家目前公认的ANSI C标准,C语言标准得以确立。
2.C语言的初始架构
以一个C语言架构来说,解析如下:
#include<stdio.h>;//printf的头文件
int main()//int为整型类型 main是主函数,C源程序必须有的,且只能有一个
{
printf("hi\n");//printf是库函数,用于打印数据,但使用此函数需要包含头文件
return 0;//返回类型,0意为整数
}
(二)数据类型
数据类型是为了描述不同类型的数据,我们需要的数据有很多种,数据类型依据我们的需求来设立,例如:char 字符类型 short 短整型 int 整型 long 长整型 longlong 更长的整型 float 单精度浮点类型 double 双精度浮点类型
(三)变量和常量
1.变量
①局部变量
局部变量,也叫内部变量,是指在一个函数内部或复合语句内部定义的变量,局部变量的作用域是它所起作用的局部范围,而生命周期则是它进入作用域开始,到出作用域结束。
②全局变量
全局变量,指定义在函数外部的变量,它可以在程序的任何地方被调用和使用。它的作用域是整个程序,而生命周期也是整个程序的生命周期。
需要注意的是,当全局变量和局部变量冲突时,采取局部优先的原则。操作如下:
#include<stdio.h>;
int a=10;
int main()
{
int a=20;
print("%d\n",a);
return 0;
}
2.常量
常量是指在运行过程中不会发生改变,是一个固定数据的量。
①字面常量
‘一’‘人’ 等,这是字符
"abc""一二三"等,这是字符串
②const修饰的常变量
③define定义的标识符常量
#include <stdio.h>;
#define MAX 20;
int main()
{
int a=MAX;
printf("%d\n"a);
return 0;
}
④枚举常量
(四)字符串
char 字符类型
char ch='a';
C语言中没有字符串类型,字符串介绍的标志是“\0”
char arr[]="abcd";
printf("%s\n",arr); //%s是打印字符串的
%d 整型 %c字符 %s字符串 %f float类型 %lf double类型 %zu sizeof 返回值
(五)转义字符
转义字符为转变原来意思的字符,有如下几个:
\? 防止编译成三字母词( ??( )
\' 表示字符’
\" 表示字符”
\\ 表示\\
\a 警告字符,蜂鸣
\r 回车
\t 水平制表符
\ddd ddd表示1-3个八进制数字,换算成十进制的数字对应的ASCII 字符
\xdd 两个十六进制数字转换成十进制数字对应的ASCII 字符
(六)注释
注释有两种,主要作用是解释或弃掉某代码。
1.C语言的注释风格
2.C++的注释风格
(七)数组
int arr[]
arr[10]={10,11,12,13,14,15,16,17,18,19,};
0 1 2 3 4 5 6 7 8 9 下标
arr[8]=18;
(八)操作符
1.算术操作符
有+-*/%,其中重点解释/和%
/,表示除,若除号两端是整数,执行整数除法;若两端有一个浮点数,则执行浮点数除法。
%,表示取模,必须是整数。例如:7%2=1
2.赋值操作符
= int a=0; //初始化
a=20; //赋值
+= a=a+3等同于 a+=3
-= *= /= 同理。
3.单目操作符
指只有一个操作数的操作符
有一个C语言中的常识:0表示假,非0表示真。
! 逻辑反操作符
- 负值
+ 正值
& 取地址
sizeof 计算操作数的类型长度
++ int a=10;
int b=a++; //后置++,使用原则为先使用,后++
即:
int b=a=10, a=a+1=11
-----------------------------------------------------------
int a=10;
int b=++a; //前置++,使用原则为先++,后使用
即:
int a=a+1=11,b=a=11
------------------------------------------------------------
--同理
(类型) 强制类型转换
#include <stdio.h>;
int main()
{
int (a)=3.14; //编译器默认3.14为double类型
printf("%d\n",a);
return 0;
}
4.关系操作符
== 用于判断相等
!= 用于判断不相等
> >= < <=
5.逻辑操作符
&& 逻辑“与”
|| 逻辑“或”
6.条件操作符
也叫三目操作符
exp1 ? exp2 : exp3
真 √ ×
假 √ ×
int main()
{
int a=10;
int b=20;
int r=a>b?a:b;
printf("%d\n",r);
return 0;
}
7.逗号表达式、下标引用操作符
逗号表达式指逗号隔开的一串表达式
其特点:从左向右依次计算,整个表达式的结果是最后一个表达式的结果。
下标引用操作符 arr【3】 arr和3是操作数
8.函数调用操作符
#include <stdio.h>;
int Add(int x, int y)
{
return x+y;
}
int main()
{
int r=Add(2,3); //()为函数调用操作符
printf(“%d\n”,r);
return 0;
}
(九)关键字
关键字是C语言本身内置的,非自己创建的。
重点解释几个:extern 声明外部符号 register 寄存器 static 静态的 return 函数返回值
const 常属性 signed 有符号的 unsigned 无符号的 enum 枚举 struct 结构体 union 联合体
void 无(函数返回类型) sizeof 计算大小 typedef 类型重命名
注意:我们常见到的define 不是关键字,它只是预处理指令
1.typedef ----类型重命名
typedef unsigned int unit;
int main()
{
unit num=20;
return 0;
}
2.static
static的作用是修饰变量和函数。
static修饰局部变量时,局部变量出了作用域不销毁,本质上,static修饰局部变量时改变了变量的储存位置,影响变量的生命周期,使其变长,和程序的生命周期相等。
static修饰全局变量时,这个全局变量的外部链接属性就变成了内部链接属性,其他源文件(.c)就不能再使用这个全局变量了。
static 修饰函数时,道理和其修饰全局变量类似,也是将其外部链接属性改为了内部链接属性。
3.void
void表示函数不需要任何返回值。
4.register--寄存器
寄存器 速度最快,空间小,造价高
高速缓存 |
内存 |
硬盘 |慢
例如: register int num=3; //表示建议num存放在寄存器中
(十)指针
1.内存
内存,计算机中程序的运行都在内存上进行。将内存划分成一个个小的空间,每个空间为1个字节。
内存单元中的编号就是它的地址,也被称为指针。
2.指针变量
存放指针或地址的变量就是指针变量。
int a=10;
int* p=&a; //int说明p的指向对象是int类型,*说明p是指针变量
*p 解引用操作符,意思是通过p中存放的地址,找到p所指向的对象,*p就是p所指向的对象。
(十一)结构体
自定义类型的一种 struct
(十二)总结
初学C语言,只对基础知识进行简单的梳理学习,后期会对各模块深入学习并记录