深度剖析传值、传地址和传引用的区别

1.指针 VS 引用 指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“. ”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此 如果你使用一个变量并让它指向一个对象,但是该变量在某些时候...

作者: liurhyme 发布时间: 11-05

一些 C Macro 的技巧

I. 是不定變數的使用: #ifdef DEBUG#define debug_printf(str, ...) do { printf(str, __VA_ARGS__); } while (0)#else#define debug_printf(str, ...)#endif 關鍵是 __VA_ARGS__,這樣可以很愉快的使用 debug_printf()。 II. 將傳入的參數變成字串: #define print_var(var)do {printf("%s: %sn", #var, var);} while (0) 關鍵字是 #var。當輸入 print_var(argv[0]); 時就...

作者: liubingzhq 发布时间: 11-04

bbs.chinaunix.net c/c++版trim函数实现讨论

首先有人提出了这个实现: //用于判断是否是空格类字符的宏 #define isSpaces(ch) (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\b' || ch == '\f' || ch == '\n') char *Trim(char *pszSource) { //字符串首指针 char *pszHead = pszSource; //用于保存最后非空格类字符的位置的指针 char *pszLast = &pszSource[strlen(pszSource)-1]; //查找最后非空格指针的位置 w...

作者: hdc1112_cu 发布时间: 11-03

C 信号编程

/******** signal函数 *********/ #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <signal.h> void sig_handler(int sig) { switch(sig) { case 2: printf("Reevied signal:SIGINT\n"); break; case 3: printf("Reevied signal:SIGQUIT\n"); break; default:; } return; } int main() { printf("PID:%d\n",getpid()); signal(SIGINT,sig_handler); s...

作者: luozhiyong131 发布时间: 11-01

C语言位操作

C语言位操作(转) 在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变 换使用,但是,灵活的位操作可以有效地提高程序运行的效率。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或...

作者: aaron_xueli 发布时间: 11-01

c语言函数默认返回值的问题

其实只怪自己二: 两个c文件 main.c #include <string.h> int main() { void* tmp; char arr[]="1234567"; tmp = myalloc (8); memcpy(tmp, arr, sizeof(arr)); return 1; } test.c #include <stdlib.h> void* myalloc(int size){ return malloc(size); } 编译 gcc -c main.c gcc -c test.c gcc -o test main.o test.o 运行 ./test 咔咔的core dump。 为啥呢?我的机器是64...

作者: abonege 发布时间: 11-01

louis vuitton sale,xuxhua Chanel Flap Bag

Frankly I cannot wait to see the outcome of the ad campaign from her photo shoot about Lilly Allen. As always she looks gorgeous and exquisitely beautiful. This Chanel Handbags is totally different out of the brand s classic carryalls since instead of coming in quilted stitched Chanel Handbags Handbags louis vuitton sale design this chanel bags ...

作者: xuxhua001 发布时间: 10-30

ACE反应器(Reactor)模式(1)

1.ACE反应器框架简介 反应器(Reactor):用于事件多路分离和分派的体系结构模式 通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数...

作者: ronat 发布时间: 10-30

Euclid's G.C.D 求最大公约数算法

c语言课本上有求最大公约数算法(呵呵,来自于欧几里德几何学): 假设m , n 两个数(且m > n) (1) k = m % n; (2) if k == 0 , 最大公约数即为n; (3) else m = n , n = k; goto (1); 算法很简单,同时也很佩服古人的聪明才智。 Euclid求最大公约数算法是对欧几里德算法的一种改进(个人认为)。由于欧几里德算法里出现了取模运算,开销比较大,所以在Euclid算法里采用了加减运算...

作者: 古兮之 发布时间: 10-29

n个最大数问题

从一堆数里找出n个最大数的程序实现。时间复杂度为O(n) #include <stdio.h> #define NUM 6 int a[] = {1,3,4,5,20, 1, 3, 7, 73, 28, 185, 102, 3, 4, 6, 9, 200, 23, 156, 67, 89, 98, 105}; int b[NUM]; main() { int i, j, k; /* need to sort the 1st 5 line */ for ( i = 0; i < NUM; i++) { b[i] = i+1; } printf("num=%d\n", sizeof(a)/sizeof(int)); for (i=0; i < ...

作者: gavinx 发布时间: 10-28