linux小白日记-C语言篇

来源:互联网 发布:cf老出现网络异常 编辑:程序博客网 时间:2024/04/28 05:48

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是结束本轮循环,而且只能跳出一轮循环,本轮循环已经跳出;