- 博客(15)
- 收藏
- 关注
原创 编程范式,15/11/18
1有关线程的卖票程序: 10个代理,总共150张票,如何同时卖,最后卖完150张票 (1)原始程序 int main() { int numAgents = 10; int numTickets =150; for (int agent =1 ; agent <= numAgents; agent++) { SellTickets(agent, numTickets /...
2018-11-15 21:53:36 177
原创 编程范式,14/11/18
1 channeling int main() { DeclareAndInitialArray(); printfArray(); } void DeclareAndInitialArray() { int array[100]; int i; for (i =0; i<100;i++) { array[i] =i ; } } void printfArray() { int arr...
2018-11-14 19:51:12 168
原创 编程范式 ,11/11/18
1 GCC编译过程中的一些有意思的问题与过程 以下代码: #include <stdlib.h> #include <stdio.h> #assert <assert.h> int main ( int argc, char * argv) { void * memory = malloc(400); assert (memory != NULL); p...
2018-11-11 21:06:29 243
原创 编程范式,10/11/18
1 宏定义 #define NthElemAddr (base ,elemSize, index) \ ( (char *) base + index * elemSize ) 以上实现了字节段的偏移 2 assert宏在 assert.h #ifdef NDEBUG #define assert(cond) (void)0 #else assert(con...
2018-11-10 21:02:16 183
原创 编程范式,8/11/18
1 复习了汇编部分,介绍C++中函数参数为引用时的汇编过程,其和pure C其实是相同的 2 C++中的this 指针,在函数编译时的作用: class blinky { public : int dunkt (int x, int y); char * mingky(int *z){ int w = *z; return slinky+dunky(wingky , winky ); p...
2018-11-08 21:44:51 227
原创 编程范式,函数汇编过程 7/11/18
1 函数声明为: void foo(int bar, int *baz) { char snik[4]; short why; why = (short) [snik+2]; *why =50; } 编译时:一块纪录里显示为如下(内存由高到低分布)):函数的参数内存开辟,调用函数信息,内部局部变量分配 int main( int argc,char**argv) { int i = 4; foo ...
2018-11-07 21:38:55 199
原创 编程范式,6/11/2018
1:伪代码形式的汇编过程 (所有的寄存器指令过程都是4Byte过程) int i; int j; i =10;//(1) j=i+1;//(2) j++;//(3) 第三行开始汇编过程: (1) M[R1+4] =10; //store operation,M代表所有RAM的名字,R1为寄存器映射的内存栈活动快基地址 (2) R2= M[R1+4]; //load operation R3 = R...
2018-11-06 21:59:51 230
原创 编程范式,5/11/18
1关于堆内存管理的细节 使用malloc函数使,返回的一段内存地址大小实际大于申请的大小,在返回的指针首地址:addr,向前偏移四个Byte或者8个Byte的内存地址,存储着申请的内存大小。 对于如下操作: int arr = malloc(100sizeof(int)); free(arr+60); 调用free函数,在找到偏移60个之后,会先前寻找4个或8个Byte的内存,解释为内存长度,并将...
2018-11-05 22:22:17 156
原创 编程范式,4/11/18
1: 有关栈清除的更新 typedef struct{ void* elems; int elemSize; int loglength; int alloclength; void(*freefn) (void*); }stack; StackNew(...
2018-11-04 16:45:34 222
原创 编程范式,3/11/18
栈的泛型(2),纯C实现 stack.h typedef struct{ void* elems; int elemSize; int loglength; int alloclength; }stack; void StackNew...
2018-11-03 23:19:49 211
原创 编程范式,01.11.18
1线性查找函数的字符串泛型例程 以下演示了在指针数组里查找字符串的操作 char *note[]={"Ab", "F#", "B", "Gb", "b"};//定义了指向5个字符串常量的指针数组 char* favorite = "Eb"; char **found = lsearch(&favorite, notes, 5, sizeof (char*), StrCmp)
2018-11-01 22:19:00 171
原创 程序内存分配
1 栈区(stack):与数据结构中的栈相似,由编译器自动分配最后自动释放。主要用于储存如下变量:函数的参数值,局部变量值,类似于栈,在内存上显示是地址连续。 2堆区(heap): 这是由程序员申请后分配的地址,不主动释放,可能会有OS回收。 3 全局和静态区:分配内存时类似于链表,内存的地址不连续。全局变量和静态变量存一起,未初始化的放一起。 4 文字常量区。 5 程序代码区。 引出的视频中字符...
2018-10-31 22:43:52 137
原创 斯坦福编程范笔记,day10.30.18
1 一个线性查找函数的泛型实现 example1: int lsearch (int key, int array[], int size) { for (int i =0; i&amp;amp;amp;lt; size; i++) { if (array[i] == key) { return i; } } return -1; } 相应的泛型实现: void* lsearch ( void* key, void* b...
2018-10-30 21:23:03 181
原创 斯坦福编程笔记,day10.29.18
1 泛型的基本引入与纯C实现 void swap( int* ap, int * bp) { int temp =*ap; *ap =*bp; *bp=temp; } 如何将上述函数通用化,满足不同数据类型,本质上是内存的互换 一种理想的错误答案: void swap( void *vp1, void *vp2) { void temp =*vp1; *vp1 = *vp2; *vp2 =temp...
2018-10-29 22:18:18 236
原创 斯坦福编程笔记,day10.28.18
#斯坦福公开课笔记,day10.28.18 1 C语言中数据类型在内存的存储方式 bool 1byte char 1byte short 2byte int 4byte long 4byte double 8byte 2 补码的基本原理:最高位代表符号位,为了实现加法运算的简便性,相反数相加为0的操作 0x00001111 +0x10001111...
2018-10-28 23:02:33 245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人