C语言阶段性总结

C语言阶段性总结

在学习前端的道路上,一开始就学习了C语言的一些基本知识,作为前端的垫脚石;历经差不多三周的学习,我就做做阶段性的总结吧;

一.软件

a) 软件分为两种:

i. 程序

ii. 数据

软件的定义:为了完成某些特定功能而编制的一到多个程序文件的集合;

程序的定义:计算机指令的集合;

程序和数据的关系:程序 ----->处理  ----->数据;

二.标识符(两种)

a) 系统预定义(关键字)

b) 用户自定义标识符

i. 不能和关键字重复;

ii. 只能用数字、字母、下划线组成,并且数字不能开头;

标识符也分为硬规则和潜规则,在这里就不一一说明,对计算机语言有过一定基础的童鞋都知道;

三.C语言的执行过程

a) 编写源文件 --->  编译目标文件  ----->  链接头文件 ----->  运行可执行文件

b) 数据类型

i. 数据类型的作用:

1. 声明数据类型其实也间接性的定义了数据存储的空间大小、位置和格式;

c)  数据类型的分类:


注意:同一个一样大小的空间内存,实数存储的数据远远大于整数存储的数据(因为实数的指数原因)

整数的表示方式:

一个字节8位;

用字节位中的最高位来表示正数和负数;

例:  

5     的二进制是   101

0’ 0 0 0 0 101       这就是正数;取决于字节位中的最高位,即第一位数

1’ 0 0 0 0 101       这就是负数;取决于字节位中的最高位,即第一位数

实数的表示方式;

实数是以浮点数形式存储的    

  其中涉及到  小数 和指数  的 概念;

例:   十进制实数类型  0.00123456

    123456      -2      即:0.123456*10-2(这是10的负2次方)

小数部分一般都采用规格化的数据形式;

字符的表示方式:

ASCII码表  表示一个字节中存储的0-127之间

数字所对应的英文字符

: 65       a  :  97

 小提示:大写和小写之间相差32


四.

a) 常量;

i. 字面量   例: 5   一眼就知道值

ii. 符号常量   例: π   给常量取了一个名字

1. 符号常量的好处:

a) 便于修改;

b) 可读性

iii. 定义常量:

1. #define   PI   3.14

a) 注意:

i. 声明常量的时候后面不加;

ii. 生命的地方放在main函数上面;

2. 还有一种方法定义常量

a) Const  float  PI  3.14

 

b) 变量

i. 顾名思义:随时发生变化的量

五.运算符&&表达式&&语句

a) 表达式:最终都有一个运行的结果;

i. 一目表达式: 

1. 例 a++  就是只有一个值参与运算

ii. 二目表达式:

1.   例:a+b   两个值参与运算

iii. 三目表达式:

1. 例:  a ? b c

a) 如果成立,b作为值;

b) 如果a不成立,c作为值;

 

b) 注意;

i. C语言中,0就是假,非0为真;

ii. 加了分号‘;’的都是表达式;

c) 复合语句:

i. {} 里面的多条语句;

d) 空语句

i. 例: 一行中只有 一个花括号的就是空语句;

六.循环语句&&判断语句

a) 注意:在这里就不一一说明了

b) Continuebreak的区别

i. Continue: 跳过本次循环,即continue后面的语句不执行,再一次跳到判断条件;

ii. Break: 跳出本层循环;

c) If语句:

i. 单分支if语句

ii. 双分支

iii. 多分支

d) 头文件  #include <stdio.h>的写法

i. #include <stdio.h> 和 #include stdio.h” 只是 执行顺序不同而已,过了其他无差异;

e) If语句也可以不加花括号

i. 不过这种情况一般用于其中只有一条执行语句时;

f) Do...while  while 的区别

i. Do...while 就算条件不满足,也会执行一次;即 先执行在判断

ii. While 如果条件不满足,则一次也不执行;典型的先判断在执行;

七.数组

a) 概念:

i. 集合的一种,就是批量处理数据;

b) 结构:

i. 连续的内存空间;   ------>内存利用率不高

ii. 一个数组只能存放同一数据类型;   

iii. 空间大小一旦声明就不能改变;

c) 数组的两个缺点:

i. 长度 length

ii. 类型 string

iii. 优点:

1. 简单;

2. 效率最高;

iv. 提起数组就不得不提起集合(接触过其他语言的童鞋应该都只带,比如java):

1. 集合的优点

a) 灵活,长度可变化,类型可变化

b) 由很多‘类’和‘接口’组成

 

d) 数组的定义:

i. 数据类型  数组名(随意取,不过最好见名知意) 【长度】

ii. C语言是不严谨的,比如数组声明的时候就必须为其定义长度;

e) 注意:

i. 当给‘数组’赋值时,比如有5个元素,但我只给其中一个元素赋值,那么其他元素默认为‘0’;

f) 数组下标越界(C语言不严谨啊...

i. C语言中编译不会报错;

ii. C语言中运行也不会报错;

g) 二维数组:

i. 涉及到  行下标  和  列下标

ii. 定义格式:  类型   数组名  【】【】

iii. 初始化:   例:   .................= {?,?,?,?}{?,?,?,?}

iv. 注意:在C语言中二维数组的行下标和列下表必须要写;

八.字符串

a) C语言中没有直接的字符串,只有字符串数组,不像其他语言中数据类型就有String

b) 字符串也是有大小的(平时没怎么注意吧):

i. 首字母按ASCII码表比较,第一个字符相等,就依次比较下一个,以此类推;

c) 说到这,就不得不提及几个函数(方法):

i. Strlen()  获取字符串长度

1. 括号里面学字符串数组名;

ii. Strcpy()  字符串copy

1. 相当于字符串copy, 格式:Strcpy(复制给哪个,本身字符串);

iii. Strcat() 字符串链接

1. 字符串链接:

a) 格式:Strcat(数组1,数组2);

i. 即把数组2的数据加载数组1的后面,此时数组1会发生变化,数组2不会发生变化;

iv. Strcmp() 字符串比较

1. Strcmp(字符串1,字符串2

a) 说明: 当字符串1<字符串2,返回为负数;

当字符串1=字符串2,返回值=0

当字符串1>字符串2,返回正数;

d) 注意:

i. 字符串接受时,scanf()里面不加地址符;

ii. 字符串接受时,不能输入空格;

e) \0’作为字符串结束标志:

i. 例: char str 10

1. 如果存的是字符串,那么最多只能存9个,因为最后会有一个看不见的‘\0’来作为字符串的结束标志;

2. \0’是控制字符串结束的标志:

a) 例:    char str 6hello”;

如果 控制为 str 2=\0”;

那么打印输出就会是   结果: he

不信你也可以试试......

f) 字符“\0”的ASCII码就是 

九.复杂数据类型(C语言特产)

a) 注意:在C语言中,复杂数据类型是C独有的,自定义类型(即成员属性)要不就是写在main主函数上面;要不就是在main主函数里面声明了,才能写在主函数的下面;

b) 结构体:

i. 关键字: struct    注意:里面的属性都是分开的,和java里面类定义的属性是一样的;

ii. 自定义类型:

1. Struct  a  {

Char  name 100】;

Int  age

}//分号是必须要的

iii. 注意:

1. 上面的 a  不是doubleint等数据类型,而是我们自定义的数据对象类型;

c) 共用体:

i. 自定义类型:

1. Union  共用体名{

Int  a

Char  b 100】;

}

2. 里面的属性其实都是一个,当你给a赋值的时候,其实b间接性也被赋值了;

3.   共用体里面的字节取“最大的”     例:在这里就得取 Char  b 100】;

 

d) 枚举:

i. 枚举相当于规定具体的值,其他值cha不进去;

ii. 并且排序由自已决定,不按ASCII码表决定;

iii. 格式:

1. Enum  枚举名{

具体的值;//例:周一

具体的值;//例:周二

}

e) 指针:

i. 例:b=a

1. 将变量a的值赋给b,而b得到的只是a的地址,所以可以说b是指向a的地址的一个指针;

2. b的值就是a的地址

a) 注意:b的地址不等于a的地址;

Ii.  指针:专门存放数据地址的类型

Iii.  语法;

例:double d = 3.14

double(指针所指向什么类型的变量) *?(随意变量名) = &(地址符)d(变量名,即上面定义的d);

十.函数:

a) 注意:

i. 在函数里函数名不能重复;

ii. 返回值类型不能是数组;

iii. C语言中函数没有嵌套定义的,没有从属关系,各函数之间是独立的;

 

B). 数据的传递形式:

I. 值传递

Ii. 地址传递(用于数组)

 

注意:1.值传递的时候,如果是无返回值类型,不return时,对调用者是没影响的;

  2.地址传递:数组调用方法的时候,采用的地址传递,不管调用的方法是否返回值,调用者的结果都将受被调用的方法所影响;

 

小提示:double    %lf

Int      %d

Long    %ld

字符char   %c

字符串   %s

Float    %f

 

%8d   右对齐,即左边空8

%-8d   左对齐,即右边空8

%2d   即 该结果保留两位小数

 

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值