c语言基础知识点复习

1.程序设计语言的发展:机器语言,汇编语言,结构化语言,面向对象语言
2.C语言的重要性:c++,c#,java可以说都是在c语言的基础上发展起来的。
3.C语言特点:
优点:代码量小,速度快(windos的内核和linux和Unix都是用c写的),功能强大(有指针可以控制硬件,Java就不行)
缺点:危险性高,开发周期长(面向过程,大程序容易崩溃),可移植性不强(机器之间运行结果不同和Java相比)
4.C语言的应用领域:驱动程序,系统开发,数据库本身就是c和c++写的、嵌入式软件
5.取整运算符注: 4/22=4 4/(22)=1
6.数据类型:基本数据类型:整数(int4 short2 long8),浮点数(float4 double8)注意 flaot型必须加f不然默认double,字符(char)
7.进制: 输入0零 八进制 0x 十六进制 输出%0八进制 %x十六进制 %d十进制
8.硬件能访问的最小数据单位是B(字节)
9.变量代表在内存中的位置,如&i就是取i的地址,想更改哪个变量的值就对谁用&
10.Scanf用法: scanf(“m%d”,&i);必须输入m123
11.Break 注意:只能用于循环语句,不能用于if的判断语句,if嵌套到for循环内可以,终止的是外部for循环而不是if条件语句。
12.变量的作用域和存储方式
按作用域分:
全局变量:在所有函数外面定义的变量,作用域是从该变量定义往下起作用,后面的局部变量如果重新定义这个变量则会覆盖。即全局变量和局部变量重名的,以局部变量为准。
局部变量:在函数内部定义的变量或者函数形参。
按存储方式分:
静态变量
自动变量(不是动态变量)
寄存器变量
13.指针:不难,多想一下就行,本身就是地址
地址:内存单元(1B,这里不是页框)的编号。
Int * p; //p是变量名字,int 是一个整体表示p变量存放的是int类型变量的地址,即p是某个变量的地址,所以只能把变量的地址赋给它,而不能把变量本身赋给它。不能看作是int类型的p变量。
Int p;//p是变量名字,int表示p存放的数据的类型。 这个语句就是在内存中开辟一块空间存放变量,指针的作用就是指向这个变量。
P = &i;//p不是i,i也不是p。修改p的值只会使p指向内存的其他位置,不会改变i的值,修改i的值也不会改变i本身所在的地址,所以不会导致p的值改变。
*p 即反解p,p就代表p指向的变量本身,而p还是一个指针变量和p不是一个东西。p是一个地址,*p则表示这个地址上存放的变量。
指针是地址,指针变量是存放地址的变量,二者不能等同但是一般把指针变量叫做指针。
指针的用处:应用于链表等复杂数据结构;快速的传递数据;使函数返回多个值;能直接访问硬件;能方便的处理字符串;
14、cpu通过地址线、数据线、控制线对cpu进行处理;
15、Free(p)是释放指针p所指向的地址的空间
16、通过发送主调函数形参的地址,在被调函数中修改主调函数的值,用指针类型的形参接收地址。
17、Int a[] a是数组名,是一个指针常量,其内容不能改变,代表数组中第一个元素的地址,是int 类型,本身是一个地址。
18、一个函数如何接受一个数组,接收数组的首地址即数组名和数组元素个数
19、A[3]其实就是
(a+3),就是指针的反解。将数组a的首地址发送给被调函数以后,被调函数的指针就指向了该数组。
20、指针变量存放的是地址,所以它的大小是固定的,都是4字节也就是32位
21、动态内存分配
(1)数组的缺点:数组在定义的时候,长度已经确定了;数组所占的内存直到a函数结束后才能释放,程序员不能手动释放;数组长度一旦定义就不能改变;假设函数f中定义了数组a,那么函数f终止以后,数组a的静态内存被系统自动释放,那么其他函数就没法使用这个数组了。总结,传统方式定义的静态数组不能跨函数释放。
(2)为什么动态的释放内存:动态数组解决掉了静态数组的缺点。
22.malloc()函数形参是字节数,返回值为第一个字节的地址,返回值用指针变量接收。
23.静态内存是系统自动分配的,自动释放,在栈分配(后被调用的函数放在栈顶并且首先返回值并释放)
动态内存由程序员手动分配手动释放,但是记得释放不然会内存泄露,按堆排序分配,不会因为函数的结束而释放内存。
24.结构体可以理解为抽象类。自定义的数据类型,最后大括号外要加分号。
25.指针的优点:将内容发送给一个函数时,直接发送一个地址就行,这样耗用内存小,执行速度快。
26.枚举类型enum。使程序更安全,将输入的值限制在一个范围内,
27.补码是数据存储在计算机中的最终形式,补码的转换过程。如-3,其绝对值源码为011,取反100,末尾加1变为101,在左侧补位,整形占四字节,即32位,左侧补29个1,最终存在二进制代码形式为11111111111111111111111111111101即FFFFFFFD
正整数补码就是原码。1110代表队的整数是多少。首位是1.所以原来的数是负数。取反加一变为10.所以代表的整数是-2.
4的二进制代码是0100,首位的0不可少
通过补码可以算出一个类的取值范围,解决类似于长整型强制转换为整形的相互转换问题。
28、何为分配内存:操作系统将内存控制权限交给某个程序。释放内存就是操作西仝收回权限。
29、野指针指向不确定的区域你没有权限访问,所以内存越界这种错误就是对内存访问没有权限的问题
30、If else 其中else对应最近的if

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值