160. Intersection of Two Linked Lists
Question
Write a program to find the node at which the intersection of two singly linked lists begins.
继续阅读 »
231. Power of Two
Question
Given an integer, write a function to determine if it is a power of two.
Solution
Approach #1 (count the number of 1) [Accepted]
Algorithm
Integer is a power of two means only one bit of n is '1', for example, 100 is 2^2=4 while 110 is 2^2+2^1=6.
继续阅读 »
在C语言里, 如何通过输入函数名字来调用函数?
直接上代码.
大致有三种方法:
用函数字典, 缺点是代码耦合在一起, 无法复用.
```
include
include
include
include
继续阅读 »
你是不是经常在有关时间的函数代码片段里看到过116444736000000000这个magic number?
下面由我的代码说明这个神奇的magic number:
/* Converting from FILETIME to UNIX Timestamp */
unix_time = FILE_TTIME;
unix_time -= 10000000 * 60 * 60 * 24 * 365 * (1970-1601) + 89; unix_time /= 10000000;
继续阅读 »
三木律师事务所的菜鸟黛真知子(新垣结衣 饰)为了帮一起谋杀案的当事人洗刷清白,在社长秘书泽地(小池荣子 饰)的指点下,找到了传奇律师古美门研介(堺雅人 饰)。古美门拥有极高的辩护才能,为了赢得胜利不惜使用任何手段,他至今保持着骄人的全胜纪录,也曾经是三木(生濑胜久 饰)麾下的得意门生。但是5年前的一起事件导致这两大律师界巨擎的决裂。看在巨额律师费的份上,古美门同意出山,他凭借巧舌如簧、颠倒黑白的能力赢得诉讼。在此之后,黛加入古美门的事务所继续作为律师的修行,而接下来一连串的官司又将古美门和三木沉疴已久的旧怨重新摆上桌面。
这也是一场法律和正义的较量……
继续阅读 »
大家先看看下面的程序:
```
include
include
int main(void)
{
char* c = (char*)malloc(100);
c[0] = 'w';
c[1] = 'o';
printf("%s\n", c);
free(c+2);
printf("%s\n", c);
return 0;
}
```
继续阅读 »
编译的详细过程
以hello.c的源文件为例, C/C++编译, 链接与装载的流程是
gcc -E 将hello.c预处理, 把所有的宏展开, 解析#ifndef, 删除注释等, 得到translation unit(编译单元) hello.i文件.
gcc -S 将hello.i编译成汇编文件hello.s
gcc -c 汇编器as将hello.s编译成成目标文件hello.o
gcc 链接器ld将hello.o链接成可执行文件a.out
继续阅读 »
当我们编译多个文件时, 就会有多个目标文件.
这些模块最后如何形成一个单一的程序呢?
模块间通信
链接器的由来
C/C++模块之间通信的方式有两种, 一种是模块间函数调用, 另一种是模块之间的变量访问.
在编译成目标文件的时候, 由于没有办法得知所引用的外部函数或者外部变量的地址, 所以会先置0.
所以问题本质上就是, 如何得知目标函数或者目标变量的地址呢?
继续阅读 »
在C++03中, 标准容器提供了begin与end函数
vector v;
int a[100];
sort(v.begin(), v.end());
sort(a, a+sizeof(a)/sizeof(a[0]));
为了统一数组跟容器的语法, C++11提供了begin()函数
继续阅读 »
```
include
include
include
define NLOOP 5000
int counter; /* incremented by threads / pthread_mutex_t counter_mutex = PTHREAD_MUTEX_INITIALIZER;
void *doit(void *);
int main(int argc, char **argv)
{
pthread_t tidA, tidB;
pthread_create(&tidA, NULL, doit, NULL); pthread_create(&tidB, NULL, doit, NULL);
继续阅读 »