c语言总结

一、常量与变量

(1)常量:

a. 数值常量(整型常量、实型常量、字符常量);
b. const 声明的类型;
c. define 宏定义;
d. enum 枚举类型;

(2)变量:

在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。

(3)数据类型:

int 4字节 有符号时取值 -21亿 -> +21亿
无符号时取值 0 -> 42亿9千万

short 2字节

long 在32位机器下,4字节
在64位机器下,8字节

char 1字节 有符号时 -128 -> +127
无符号时 0 -> 255

long long 一般用不到

float 4字节 用IEEE标准制定

double 8字节 用IEEE标准制定(浮点数时推荐用这个)

二、循环结构

(1)for循环(一般用于循环条件已知的条件下)

for (表达式1; 表达式2; 表达式3){

语句;
}

(2)while循环(条件循环时候使用)

while(条件){

<语句体>;

}

(3)do while循环(保证循环体先执行一次,根据条件来判断是否执行下一条)

do{

<语句体>

}while(循环条件);

(4)goto循环(不建议使用)

三、选择结构

(1)

if(判断条件){
语句块1
}
else{
语句块2
}

(2)

switch(表达式){
case 整型数值1: 语句 1;
case 整型数值2: 语句 2;

case 整型数值n: 语句 n;
default: 语句 n+1;
}
ps:不建议使用

四、数组

(1)一维数组

定义:类型说明符 数组名[常量表达式];
int a[10];(若不初始化,则要说明其大小,里面是常量(const不行))
注意:1.数组中的下标是从 0 开始的(而不是 1);
2.不完全初始化时,没有被初始化的元素自动为 0;
3.完全不初始化,即只定义“int a[5];”那么各个元素的值就不是0了,所有元素都是垃圾值;
4.数组下标访问越界,本质是访问非法内存(未定义行为);

(2)二维数组

本质:就是一个一维数组,只不过里面的元素是个一维数组。
定义:类型说明符 数组名[length1][length2];
length1可以看做是行数,length可以看做是列数。

(3)多维数组

本质:仍是一维数组,只不过嵌套的一位数组。
不建议使用。

五、运算符

(1)算术操作符

算术标识符都有哪些:+、-、*、/、%。

(2)移位操作符。

左移<<(相当于*2)
右移>>(相当于/2)

注意的是移植不能是负值,或者值太大。

(3)位操作符

位操作符包括:&(按位与)、|(按位或)、^(按位异或)、~(取反)。

(4)赋值操作符

赋值操作符:+=、-=、*=、/=、%=、 &=、| =、^=、<<=、>>=、

(5)单目操作符

单目操作符有:!(逻辑反操作、非)、&(取地址符)、sizeof()(求长度)、~(按位取反)、++、––、*、(类型)等。
i++ 相当于{ temp=num;
num += num;
return temp;
}
++I 相当于{
num+=num;
return num;

}

(6)关系操作符

关系操作符:<、>、<=、>=

(7)逻辑操作符

逻辑操作符:&&、||

(8)条件运算符

exp1 ? exp2 : exp3

六、函数

(1)定义:

函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码。函数还可以接收数据,并根据数据的不同做出不同的操作,最后再把处理结果反馈给我们。

(2)形参和实参

形参(形式参数):在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。
实参(实际参数):函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。
形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。

(3)递归函数

一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,再一层一层地由里到外退出。如菲波那切数列

(4)函数变量的作用域

变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。分为局部变量和全局变量。
局部变量定义在函数内部的变量,它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。
全局变量定义在所有函数外部定义的变量,它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。
开发项目,尽量不要使用全局变量,代码重构不方便。

七、结构体

(1)定义:

C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。
struct 结构体名{
结构体所包含的变量或数组
};

(2)结构体成员的访问

a.使用“.”来访问
b.使用“->”来访问

八、指针

(1)定义:

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。

(2)指针变量的运算

指针+,-常数的话,就是加或者减一个指针类型的长度;

(3)指针数组和数组指针

指针数组: 是指一个数组里面装着指针,也即指针数组是一个数组;
定义形式:int *a[10];
数组指针:是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已;
定义形式:int (p)[10]; 其中,由于[]的优先级高于,所以必须添加(*p).

(4)二级指针

如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。
形式:int a =100;
int *p1 = &a;
int **p2 = &p1;

(5)空指针null和void指针

空指针:当把一个空指针常量转换为指针类型时,所得到的结果就是空指针。空指针常量是一个值为 0 的整数常量表达式,或者是一个 void* 类型的表达式。在头文件 stdlib.h、stdio.h 以及其他头文件中,宏 NULL 被定义为空指针常量。
void指针:指向 void 的指针,或者简称为 void 指针(void pointer),是类型为 void* 的指针。因为没有对象类型是 void,所以 void* 被称为万能指针类型。换句话说,void 指针可以代表任何对象的地址,但不代表该对象的类型。若想获取内存中的对象,必须先把 void 指针转换为合适的对象指针。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值