Linu小白日记(四)
C语言基础知识
1.数据基础基础类型
首先,放一张图,基本上囊括了前期C语言学习的所有数据类型了;
如图所示,在C语言中,如果需要用到变量,就必须先定义变量,而定义变量就必需规定其类型,因为不同类型的变量内存会为其分配不同大小的内存空间。这也是C区别于其他语言,重要的一点之一。
举个例子:int a; char c;
2.基本数据类型所占内存的大小
在32位pc机上,即一个内存地址占用4kb;
类型 所占空间
int 4kb
char 1kb
float 4kb
double 8kb
其中有3个类型容易混淆,long int, short int,int,我们可以这样记忆:int是4kb,short一定不比int长,long一定不比int短。
3.unsigned和signed,一般不写出来的话,系统默认是signed。signed和unsigned是用来修饰前面所说的数据类型的,正如直译过来的一样,加了unsigned,数据就不会取到负值;
有一点需要注意:
系统在运行到两种不同类型数据运算时,有以下的隐形规定:
即优先级低的会往有先级高的转化;
4.字符类型数据;
即char类型,通常指的是:’a’,’b’,’c’,’1‘等,也可以指符号,如’+’,’ ‘(空格),这些可以对应ASCII表。
有一些字符是无法通过键盘敲入的,这就需要用到转义字符;
常用的转义字符有:\n回车;\tTAB;
字符常量与字符串常量;
区别:一个是用“”(字符串),一个是用‘‘(字符);
字符串常量往往是多个字符常量组成的,以\0为结尾标志;
5.运算符
a.C语言中的运算符主要可以分为以下几类:
(1)算术运算符 (+ - * / %)
(2)关系运算符 (> < == >= <= !=)
(3)逻辑运算符 (! && ||)
(4)位运算符 (<< >> ~ | ∧&)
(5)赋值运算符 (=及其扩展赋值运算符)
(6)条件运算符 (?:)
(7)逗号运算符 (,)
(8)指针运算符 (*和&)
(9)求字节数运算符(sizeof)
(10)强制类型转换运算符( (类型) )
(11)分量运算符(.->)
(12)下标运算符([ ])
(13)其他 (如函数调用运算符())
b.他们也都有各自的优先级(从高到低排列):
函数符号()数组下标【】
单目运算符
算数运算符
移位运算符
关系运算符
逻辑运算符
三目运算符
c.他们也分左,右结合性,即左结合性就是和左边的数据优先结合,运算;
d.i++/i--:将i的值先代入语句运算,在语句结束后执行++/--操作;
++i/--i:先将i的值++/--操作,然后在代入到语句中;
6.关键字
C语言中一共有32个关键字;每种关键字都有不同的功能;
举个例子
const:修饰变量后,就把变量变成了只读变量,着极大的提高了系统的安全性,但是我们还是可以通过地址来修改它;
register:寄存器变量,可以加快程序运行速度;
static:静态变量,可分为静态局部变量和静态全局变量,即把原先在堆,栈上分配内存空间的变量,转移到bss段上分配空间,这样变改变了变量的生存期;
extern:声明外部变量,使用后,就不需要cpu为声明的变量再分配存储空间了,需要注意的是,extern无法声明被static修饰的外部变量;
volatitle:修饰的变量不会被编译器优化,每次都会去内存中访问;
typedef:将已有类型定义别名;
7.格式输出说明符含义
%d或%i按十进制有符号整数输出,正数的符号省略
%u按十进制无符号整数输出
%o按八进制无符号整数输出(不输出前导0)
%x或X按十六进制无符号整数输出(不输出前导符0x)
%c按字符型数据输出
%s按字符串数据输出
%f按小数形式输出(6位小数)
%e或E按指数形式输出实数
%%输出%本身
%g或G选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0
8..C语言结构
a.if/switch
都是选择结构,关系是if包含switch,但是有些情况使用switch会比if来方便;
if结构:
if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
……
else if(表达式m)语句m
else 语句n
匹配规则:
else总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对;
当if和else数目不同时,可以加花括号来确定配对关系
switch结构:
switch语句的格式:
switch(表达式)
{
case 常量表达式1:语句1; break;
case 常量表达式2:语句2; break;
…
case 常量表达式n:语句n; break;
default :语句n+1; break;
}
b.while/for
循环结构语句,while可以用来做次数不确定的循环,而for循环的次数是确定的;
while结构:
(1)while (表达式)
语句
当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。
(2)do
循环体语句
while(表达式);
do-while语句的特点:先执行循环体,然后判断循环条件是否成立
for结构:
for(表达式1;表达式2;表达式3) 语句
continue与break
continue是结束本次循环直接进行下次循环,循环还继续;
break是结束本轮循环,而且只能跳出一轮循环,本轮循环已经跳出;