点击上面蓝字关注我们
文 | 小泷包/ 阿铃
编辑 | 小泷包
UNSW 大神带你搞定大学课程
2019全年进入3学期紧张的学习模式,让刚刚入学的IT萌新们全程处于高强度学习压力状态,每周的quiz或者assignment就搞得人仰马翻;但是, 匠人联合新南IT专业全能HD学霸开启保驾护航模式,让你轻松无压力PASS每个课程。面对上课蒙蔽,代码不会,考试紧张,我们都会帮你一一迎刃而解。
UNSW大神Online公开课
COMP1521 将会限时公开课大放送
注意是免费!免费!免费!
课程内容涉及:
如何学习1521,如何轻松应对每个quiz,作业难题
最后轻松pass,拿走HD, 走上人生巅峰
一转眼,现在已经是第三学期Week 4了, 很多小伙伴可能还没进入到学习模式。然而面对众多的专业课,也只能在心里默默感叹自己上辈子可能是条蜀道!因为真的太!难!了!
令人振奋的好消息来啦!
我们找来了新南IT专业的学霸小哥哥小姐姐
一起梳理了知识点,针对大学课程内容进行每周回顾与讲解,
总结一周知识点,紧跟学校课程节奏,
以最快的时间帮助小伙伴们答疑解惑,缓解大家的学习压力。
赶紧收藏保存好这份笔记!
让你在盗墓,打怪的同时
也能够
震撼经验住全场!
具有两年丰富一线辅导经验
COMP1521成绩95的铃神带着这份笔记来了!
知识葵花宝典大放松
准备好接招吧, 知识点总结福利发送啦
>>Part 1: C语言复习
数据结构:
Stack:后进先出
Queue:先进先出
*Priority Queue:这是2521的内容
这门课并不会对Stack,Queue的细节进行考察。所以只要做到了解个概念就可以了。至于汇编那边的内存stack嘛... _(:з)∠)_ 到时候再说。gcc的flag(-O, -E 等等) 的作用: 用man gcc去查
>> Part 2: 夹在内存与数据之间的各种惨烈修罗场
考点1:内存
现代电脑的内存一般8G起步。通常而言,在这门课中将内存看做是一段连续的,以1byte为单位的,像Array一样的空间。
在这门课中,将内存看做一个大Array就可以了。在操作系统部分会详细介绍内存管理方面的细节。但是关于内存访问的细节(例如CPU偏移量等等),这门课并不会涉及到。所以不必太过紧张。只要能做到理解MIPS下对CPU对内存的访问模式就可以了.
考点2: 内存中的C程序
C程序将其所占用的内存分为4个区域:
int a[10];
int *d;
intmain(){
int b[10];
int *c = malloc(4 * 10);
}
需要注意的是,由于历史原因,stack的增长是按照从高到低的地址顺序。
a. 代码段 code region
其存储程序的可执行机械码
b. 数据段 data region
数据段存储那些需要在整个程序的执行过程中都保留的数据,如全局变量,常量等
c. 堆 heap region
堆存储那些在程序执行过程中分配的内存空间(如通过malloc函数分配的)这些被分配的空间在被free之前都会被占用。(当然,关闭程序会自动释放内存空间)
d. 栈 stack region
存储函数中的局部变量,参数等等。当函数执行结束时,栈内的内存会被释放。
考点3:数据在内存中的编码形式
a. pointer
指针实质上是用一段内存空间存储一个内存地址
数据指针保存在数据段,堆,栈段
而代码段保存有函数指针(function pointers)
指针的值必须是与数据类型相符合的
例如:
b. int
a] 用不同的方式表示整数
i = 42 直接表示
i = 0x2A 16进制:转换成16进制(0-9, A-F)后在前面加0x
i = 052 8进制:转换成8进制(0-8)后在前面加0 (数字0,不是o
b] 数据类型:
short int i =123S 短整型,通常占用2个Bytes
long int = 123L 长整型,通常占用8个Bytes
unsigned int i =123U 无符号整形,与int相同,4 Bytes
c] 数据的表示
1) unsigned int
2) signed int
对于负数,如果单纯的通过在符号位上存储1来表示他是个负数的话,加减运算会出现很多麻烦而且还会出现2个0这种奇葩的情况。因此为了方便起见,计算机是通过【补码】来表示负数
也就是说
-x = ~x + 1
负x 等于对x求反码然后加一。
c. float
如果需要存储带有小数位的数据,那么就需要用上浮点类型。就像int 有 长短整型等等亚种一样,浮点数也分为2种.
d.char
char 主要有两种编码,ASCII和UTF-8(Uniode)
ASCII编码每个字符占用1个byte(右边的7个bit位存数据,最左侧的bit总是0)
考试时查ASCII表的方法:命令行输入 man 7 ascii
UTF-8编码每个字符占用1-4个byte,其中第一个byte规定这个字符所占用的长度,
有多少个byte,第一个byte开头处就有多少个连续的1,并在1后面标一个0来避免和表示字符的1混在一起。由于UTF-8需要兼容ASCII编码,故当长度 = 1的时候,他的编码和ASCiI完 全 一 致。
除了第一个byte,其他的byte一律以10开头
e. Arrays
Array占用一段连续的内存空间→
这个array “a” 实质上是一个指向内存中元素
a[0]的指针,也叫做基址。因此也可以通过在对这个基址加减偏移量的方式来访问array中的其他元素。
例如,v[i] = *(v + i)
其中 v + i 表示在v[0]地址的基础上找出array v接下来的第i个元素的地址。
i是偏移量,表示内存地址相对于基址的偏移。
而后,*( ) 所起到的作用是取出,并返回括号内内存地址所存储的具体数值。
也就是说,*(v+i)所做的是取出这个array中第i - 1个元素。
f. Structs
结构体是一串数据元素的组合。如下图所示,数据元素排列的顺序会影响结构体实际占用的内存空间。不过好在,现实中我们不需要太担心这个问题,因为编译器会帮我们搞定一切不必要的麻烦。
g. Unions
union,中文名“联合体、共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。
不过区别也挺明显:
结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全分配。而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”;但优点是内存使用更为精细灵活,也节省了内存空间。用的时候小心点,很容易出现未知错误。
h. Enumerated Types
列举型别。
typedef enum {RED, YELLOW, BLUE } PrimaryColours;
列举性别的意思是,这个数据类型(PrimaryColours)所允许的值只有花括号中的RED, YELLOW, BLUE。就像下拉选框一样,只允许特定的值。他实质上做的事情是让花括号中的每一个选项对应一个int的值(例如1,2,3...)
为什么选择匠人学院课程辅导
匠人臻选多门课HD大神(成绩90%+)做tutor,
同时又有专业职场老司机做顾问,
无论问题深或浅,都有大神相助
任职tutor了解你的课程考试作业与项目全部,都是该课以及相关课7分大神 匠人多种优惠活动帮你节约成本,同时也为学习好的同学提供舞台 可以根据学生情况灵活制定课程内容与时间
Tutor 服务方式
我们为同学们提供多种形式的服务,IT匠人会提供如下服务:
覆盖院校
澳洲各大院校,主要包括 (但不仅限于)
我们可以辅导
这些语言涵盖了大学IT/CS专业的课程,由于大学课程要一一列出来会太多,所以有需要的小伙伴可以联系我们的客服。
Tutor成绩
所有Tutor都在所在学校对应学科获得高分
4轮面试,层层选拔
只选择最优秀的导师/tutor提供教学。
都是高分,猴赛雷有没有
报名方式
添加悉尼匠人小乐微信(sydneyjiangren)报名:
匠人学院
致力于建立属于澳洲IT华人的
学习&工作交流平台
让所有IT华人
落地找工作不再是难事