C语言基础方面的知识有很多,此文章用来记录一下我在学习C语言过程中的理解与思路。话不多说,正文开始。
1.编译工具以及常用命令介绍
1.1ubuntu
C语言可以使用很多很多的软件进行编程,但我建议初学者还是在ubuntu虚拟机中使用linux操作系统进行编写代码。主要原因只有两个:开源、功能齐全。
1.2常用命令
常用的命令其实不多,安装好linux系统我们要先创建一个文件夹吧,所以引出我们的第一个常用命令:mkdir 文件夹名回车后就在当前文件夹下创建了一个新文件夹了。创建好文件夹我们是不是现在就需要进入文件夹呢?所以第二条命令:cd 文件夹名回车进入文件夹后我们是不是应该想到:该怎么退出当前文件夹呢?还是用我们的cd命令:cd ..来退出。创建学会了下来就是删除:rm -rf文件夹名,会删除文件夹及文件夹下的所有内容。创建文件命令:vim 文件名.c因为我们学习的是C语言基础,所以文件后缀.c。编译文件命令:gcc 文件名。运行:编译完成后会生成一个./a.out文件,直接./a.out就可以运行编译好的代码了。我们也可以使用gcc -o来对文件进行编译并且可以取名。
2.关键字及常量
关键字分为好几类,我们所使用最多的是存储类型、数据类型、控制语句
2.1存储类型
char(1字节)、int(4字节)、float(4字节)、long(4字节32os)(8字节64os)、double(8字节)、short(2字节)、 struct、enum、union、void
2.2存储类型
auto、static、extern、register
auto:修饰的变量存储在栈区,只能修饰局部变量
static:修饰的变量存储在静态区,即可以修饰全局变量,也可以修饰局部变量,用static修饰的变量叫做静态变量。
extern:修饰的变量存储在静态区,只能修饰全局变量
register:修饰的变量存储在寄存器中,只能修饰局部变量
变量在第三个标题下会讲。
2.3控制语句
if、else、switch、case、default、for 、do、while、break、continue、goto
2.4常量
2.4.1 字符常量
‘a’ ‘A’
2.4.2 整型常量
二进制:1010
八进制:066
十六进制:0xaf5
十进制:99,-2
注意:默认情况下,整形常量为有符号数;
无符号的int类型:98U
Long类型:76L
无符号的长整型:78UL
2.4.3浮点型常量
小数:3.14 0.00001 10000(浮点型常量包含整形常量)
指数:1e+5 == 100000 1e-5 == 0.00001
2.4.4 字符串常量
“hello”占几个字节
‘h’‘e’‘l’‘l’‘o’‘\0’。
2.4.5 标识常量(宏)
宏只是一个单纯的替换!
#define 宏名 表达式
注意:1、宏名一般用大写,为了和普通的变量区分开来吗,当然小写也可以
2、宏后没有分号
3.变量以及运算符
3.1定义一个变量
存储类型 +数据类型 +变量名;例:auto int a。存储类型决定开辟空间的位置,数据类型决定开辟空间的大小,变量名决定开辟的空间名。
3.2局部变量和全局变量
局部变量:定义在函数(任何)体内的变量
全局变量:定义在函数(任何)体外的变量
3.3变量的初始化
初始化:定义变量的时候就给他一个初始值!1.Int a = 10; //初始化
2.Int a; a = 10;//赋值
1.全局变量如果没有初始化值为0;
2.局部变量没有初始化置为随机值。
3.4运算符
3.4.1算术运算符
+、-、*、/、++、--、%
注意:%不能用于浮点数
++在前:先自加,在赋值
++在后:先赋值,在自加
注意:如果++a和a++单独成立一条语句,那么都相当于给a+1。
3.4.2关系运算符
> < >= <= == !=
3.4.3逻辑运算符
&&、||、!
&&:
表达式1 && 表达式2
截断法则:有一个为假,结果就为假,前一个为假,后面就不在进行运算了
3.4.4sizeof运算符
计算变量或数据类型开辟的内存空间大小。
3.4.5三目运算符
表达式1 ? 表达式2 :表达式3
先去判断表达式1是否成立,如果成立,就将表达式2的值作为整个表达式的值,如果表达式1不成立,则将表达式3的值作为整个表达式的值。
3.4.6逗号运算符
表达式1,表达式2,表达式3,表达式4,.........,表达式n
从左往右依次去计算每个表达式的值,最后,将表达式n的值作为整个表达式的值
4.输入输出
函数:具有独立功能的模块
标准输入输出函数:scanf、printf(对变量的类型没有限制)
输入:从键盘拷贝数据到内存中
输出:将内存中的数据拷贝到终端
4.1输出
printf(“格式控制串”,输出表);
格式控制串:原样输出的内容 + 格式化符
输出表:输出的内容
注意:输出的内容要和格式化符一一对应!!!
整型:
%d:十进制的整数
%o:八进制
%x %X:十六进制
#:自动在八进制和十六进制前加上前缀
%u:以无符号的整型
%hd:short类型
%ld:long类型
浮点型:
%f:float类型
%lf:double类型
%g:选择小数和指数中比较合适的一种情况进行输出
%e:指数形式
.nf:保留小数点后n为进行输出
%m.nf
m:指定我们输出的域宽,默认(m>0)右对齐,m的值大于数据的实际长度时,左边补空格,m的值小于数据的实际长度时,原样输出!(反之:m<0----左对齐:右边补空格)
4.2输入
scanf(“格式控制串”,地址表);
格式控制串:原样输入的内容+格式化符
地址表:&+变量名(你要给哪片空间去输入)
1.scanf的格式控制串中,不要去加多余的修饰语,如果要加,原样输入
2.如果输入“%d%d”时要给多个变量进行赋值,在格式控制串之间没有多余的修饰语时,以空格,回车,tab作为第一个变量输入结束的标志
3.全部输入结束后,必须以回车作为结束符
4.如果是“%c%c”时,在输入时,不能有空格回车tab键,因为空格回车tab也是字符;