随笔分类 - C/C++
摘要:1. unique_ptr:这种智能指针是用于独占一份内存资源,一个资源也就只允许被一个unique_ptr占用。离开作用域后自动删除,无需显式调用delete。并且不能复制,只能转移。 原理实现: template <typename T> class unique_ptr{ private: T
阅读全文
摘要:这个本来应该在几个月前就处理,一直拖到了现在。题目描述很简单,一个二维平面被分割为小块,每块可能是陆地或者海洋。1表示陆地,0表示海洋。如果一个陆地区块的上\下\左\右是一块陆地,那么它们就会被看成是一个大陆。给定数组表示各区块,统计出有几块大陆。 关于这道题,当时给出题目的时候还愣了一会儿,因为在
阅读全文
摘要:offset_of 宏 定义:include/linux/stddfx.h 功能:给出两个参数:结构体和它的成员,获取其成员关于结构体首地址的偏移: #define offset_of(type, member) (unsigned long) &((type*)0)->member 这个想法挺精巧
阅读全文
摘要:在408和常见教材里面,以普通的尾指针点单链表为例, 一个链表节点包含数据部分和尾指针。首个节点称为头节点,不包含数据,它的尾指针指向下一个节点(首个节点设计成存数据的也行)。每个节点依次连接,直到最后一个节点,尾指针设为null,表示链表结束。如果设计一个节点内有首尾两个指针,那就可以让它们分别指
阅读全文
摘要:线程创建函数:pthread_create(thread,attr,start_routine,arg) 这个函数在pthread.h中,它的四个参数分别表示: thread: 指向线程标识符的指针,传入时一般都用&thread[i]这样的写法(一般是多个线程,所以用线程数组) attr: 线程参数
阅读全文
摘要:与数组类似,函数在内存中占用的是一块连续内存,在表达式中可以被转换为该函数在内存中的首地址。将首地址赋予给一个指针,此时这个指针就指向了这个函数。 声明一个函数指针的写法: returnType (*pointerName)(param list); returType表示函数的返回值,pointN
阅读全文
摘要:在编译程序时,需要经过“预编译->编译->汇编->链接”四阶段。链接库时,有静态库和动态库两种库。 静态库:函数和数据被编译进一个.lib文件。在编译连接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件。换句话说,打包时,库已经被加到了可执行文件内
阅读全文
摘要:在c语言中,static关键词根据出现位置不同,其作用也不完全相同。 在函数中使用时,用于声明一个静态局部变量。静态变量并不随着其所在函数的调用结束被一起销毁,而是保留到下一次调用时继续使用。注意,static修饰的局部变量仍然是一个局部变量,它的作用域仍然还是这个函数内。其默认值为0。 在代码块外
阅读全文
摘要:复数乘法 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i2=−1;也可以写成极坐标下的指数形式 (R×e(Pi)),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 R(cos(P)+isin(P))。 现给定两个复数的 R 和 P,要
阅读全文