![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
公开课
文章平均质量分 60
Dakin__
这个作者很懒,什么都没留下…
展开
-
编程范式(斯坦福大学)学习笔记《七》
在上一次课中分别实现了整型栈和泛型栈,需要注意的是以前我们在实现整型栈的时候栈空间元素存放的是入栈元素本身的值,而对于泛型栈,我们在泛型栈空间里存放的是指向元素的指针。 但是,如果我们的栈内元素本身就是指针或者句柄怎么办(他们本身也开辟了存储空间,我们需要释放这些空间)?在这里我们要修改stack结构体的定义,在里面添加一项用来指向函数的指针成员,这个函数具体让用...原创 2018-07-16 18:05:24 · 536 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《十二》
本节课讲解的主要是预处理器,编译和连接的异同。#define有两个功能:一个是定义常量,一个是作为宏。//定义常量#define w 40#define h 80#define pere 2*(w+h)//宏#define MAX(a,b) (a>b?a:b)MAX(10,40)//预处理替换为(10>40?10:40)//int max = (fib(100...原创 2018-07-20 00:07:17 · 602 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《十一》
上次的课中都是使用C代码生成汇编代码,这次课中将使用C++代码生成汇编代码,对比结果发现这两种语言最终生成的代码形式很像。 C语言版本:void foo(){ int x; int y; x=11; y=17; swap(&x,&y);}对应的汇编代码:SP=SP-8;M[SP+4]=11;M[SP]=17;...原创 2018-07-19 16:43:25 · 1082 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《二》
斯坦福大学开放课程:编程范式学习笔记《二》本课讲述了C/C++关于int,float等数据的底层表示,以及赋值操作所进行的处理。本节内容比较简单,应该属于组成原理的基础知识,各种码的表示和底层实现,但是,讲述还不错,特别是为何要这样形成补码,比单纯记忆强多了,这样才理解了取反加1的原因,比当初上课的时候要理解深刻多了。bool 1bytechar 1 byteshort 2 byt...转载 2018-07-06 17:11:26 · 656 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《十》
int foo(int bar,int* baz){ char snink[4]; short* why; }栈段示意图:注意:1.局部变量参数根据声明从右至左而在栈中从高地址至低地址存放,即,第0个参数(bar)总是放在其他参数的下方,第1个参数在第0个参数之上。空间位域参数位于局部变量下方(也就是位于低地址处)。在空间位域参数和局部变量之间存储着调用函数的某些信息,以便...原创 2018-07-19 00:18:18 · 539 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《一》
斯坦福大学开放课程:编程范式学习笔记《一》编程范式(Paradigm) Lesson 1 读书笔记:列举几种常见的编程语言(范式):CAssemblyC++Concurrency programming(并行编程) (只是一种范式,而不是语言,可以使用C/C++实现并行编程)SchemePythonC是面向过程,C++面向对象。C语言是函数调用函数,因此就像一个多级标题一样,通过函数A调用B, 而...转载 2018-07-06 11:41:55 · 1827 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《九》
接下来的课程会涉及到计算机体系结构和汇编语言,解释C/C++代码片段是如何编译成汇编代码的,内存模型,函数调用,函数返回的类型等。4字节变量的例子:int i;int j;i=10;j=i+7;j++;对应的汇编代码:M[R1+4]=10;//store operation(将栈段中某个区域的值进行了更新)R2=M[R1+4];//load operationR3=...原创 2018-07-17 18:24:21 · 539 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《五》
线性搜索void *lsearch(void* key,void base,int n,int elemSize, int (*cmpfn)(void *,void *)){ for(int i<0;i<n;i++) { void* elemAddr=(char*)base+i*elemSize; //这里的强制转换成char*只是为了让编译器可...原创 2018-07-11 17:07:18 · 551 阅读 · 1 评论 -
编程范式(斯坦福大学)学习笔记《三》
本课继续讲解了C语言的强制类型转换,之后介绍了结构体,数组以及结构体中的数组。 *和&的技巧例1:double d = 3.1416;char ch = *(char*)&d;取出d的地址,并重新解释为char型,然后解引用。由于double为8bytes,而char为1bytes,因此ch表示的是原来double中截取1bytes的结果。 例2...原创 2018-07-09 21:16:29 · 800 阅读 · 3 评论 -
编程范式(斯坦福大学)学习笔记《八》
这节课主要讲解了内存管理函数实现方式。一.Heap(堆)堆位于低地址空间,通过malloc函数分配堆的地址。关于malloc函数的介绍可参考:C内存管理函数。int* arr=malloc(40*sizeof(int));注意:得到的内存块会比160字节大一点,可能是164或168,因为该内存块的开头包含了一段小的空间用来记录有用的信息(例如该块内存的大小,该内存块后面的内存块是...原创 2018-07-17 00:14:36 · 459 阅读 · 0 评论 -
编程范式(斯坦福大学)学习笔记《六》
这节课的内容是使用C来实现一个支持泛型栈。C语言实现支持泛型的栈一:首先我们先实现一个特定类型的栈(比如用来存储整型的栈),来看一下实现栈一般都需要哪些内容: 我们分三个文件来实现(stack.h;stack.c;Main.c)。stack.h //声明文件,里面包括对Stack以及相应操作(函数)的定义。// 定义一个整型栈typedef struct { // 指向栈...转载 2018-07-15 17:34:52 · 485 阅读 · 0 评论