Zhang's Wikipedia

玩就玩大的

C/C++ 安全编码 —— 指针与内存

1. 仿踩内存 if (buf[len - 1] != 0x5A) { return; }

2018-02-02 21:53:05

阅读数:275

评论数:0

数组(数组名)与指针辨异

int arr[] = { 1, 2, 3 }; printf("arr = %p\n", arr); printf("&arr = %p\n", &arr); printf(&qu...

2018-01-24 22:05:27

阅读数:132

评论数:0

C/C++ 安全编码 —— 不安全的函数

1. 文件与IO操作 gets():从控制台输入到字符数组;char response[8]; gets(response);如果控制台输入超过 8 个字符,程序便会发生不确定的行为;

2017-12-26 23:47:13

阅读数:571

评论数:0

C 非标准库(conio.h)

所谓的 C 标准库(C standard library),是指在 ISO C 或者 POSIX 标准中定义的; POSIX is a superset(超集) of the standard C library, and it’s important to note that it defer...

2017-07-29 20:17:55

阅读数:1409

评论数:0

C 语言 —— ! 和 ~(感叹号和波浪号)

~ 表示按位取反,是位运算符,运算对象是 2 进制。 !表示逻辑非,是逻辑运算符,运算对象是真或假。最终的结果也是 0/1 !!:则表示取过一次非之后,再取一次;

2016-09-22 08:50:20

阅读数:1741

评论数:0

强大的 function adapters

- 容器是以 class templates 完成; - 算法以 **function** templates 完成; - 仿函数是一种将 operator() 重载的 class templates; - 迭代器则是一种将 operator++ 和 operator* 等指针习惯行为重载的 cl...

2016-09-21 23:14:40

阅读数:326

评论数:0

transform、accumulate —— C++ 下的 MapReduce

accumulate:Map,逐元素分别单独处理; 注:for_each:不改变区间元素的内容,所以更多的是输出打印等功能; accumulate:Reduce,整体化归为一个单独的数值; 两个函数均位于<algorithm>头文件中。

2016-09-21 22:43:31

阅读数:488

评论数:1

C 语言常见 API(fprintf、fputs、fprintf)

1. fprintf:输出到文件描述符对应的文件 stderr:错误输出也是一种特殊的文件描述符

2016-09-21 09:11:43

阅读数:502

评论数:0

CRT(C Runtime Library)—— C/C++运行时库

C runtime library(part of the C standard library) 任何一个 C 程序,它的背后都有一套庞大的代码来进行支撑,使得该程序得以运行在更高级别上,而不必担心同计算机底层操作的细节,这套代码至少包括: 入口函数(Linux,_start) 入...

2016-09-17 22:27:40

阅读数:647

评论数:0

#ifdef 的使用

1. DEBUG、_DEBUG

2016-09-17 21:20:29

阅读数:1660

评论数:0

指针应用时的注意事项

1. 空指针不可取其值或者继续访问;

2016-09-16 22:33:23

阅读数:392

评论数:0

【奇葩笔试】—— printf() 作为函数的参数及其返回值

考察 printf() 作为函数的参数,以及其返回值情况

2016-09-11 19:40:52

阅读数:543

评论数:0

【Debug】— C++ 表达式必须包含类类型

错误一般发生在使用.进行访问时,原因可能在于: 你以为你定义了一个类对象,其实你是声明了一个函数,在编译器看来; 对类对象指针采用.的方式访问其成员变量; 1. 情况 1class Test{ public: Test(){ } void foo(){ } };int main(i...

2016-09-11 12:20:58

阅读数:22779

评论数:0

C++ Tricks(一)—— 判断字符串 string 对象的所有字符都相等

S == string(S.size(), S[0]);

2016-09-09 10:40:32

阅读数:977

评论数:0

C Tricks(十九)—— 求以任意数为底的对数

本文仅求对数的整数部分:int log(int n, int base){ int i = 1, cnt = 0; while (i*base < n){ i *= base; ++cnt; } return cnt; }

2016-09-06 12:13:34

阅读数:587

评论数:0

C Tricks(十八)—— 整数绝对值的实现

为正还是为负;(对 int 类型而言,第一位为符号位,其余为数值,则右移 31 位,再与 1 求与) 如果为正 ⇒ 返回原值 如果为负 ⇒ 对其二进制形式各位取反 + 1 int abs(int x){ return x >> 31 & 0x01 ? ~x + 1 :...

2016-09-03 18:33:10

阅读数:445

评论数:0

C Tricks(十七)—— 对角线元素的屏蔽、二维数组(矩阵)的遍历

使用 if + continue 实现对对角线元素的屏蔽 for u in range(n): for v in range(n): if u == v: continue ...

2016-08-18 18:39:14

阅读数:661

评论数:0

C Tricks(十六)—— 复制字符串

while (*s++ = *t++); // target ⇒ source //

2016-08-17 16:29:43

阅读数:279

评论数:0

C Tricks(十五)—— 算符优先级的表示

不能简单地按照“先左后右”的次序执行表达式中的运算符。关于运算符执行次序的规则(即运算优先级), 一部分取决于事先约定的惯例(比如乘除优先于加减), 另一部分则取决于括号 也就是说,近根据表达式的某一前缀,并不能完全确定其中各运算符可否执行以及执行的顺序,只有在获得足够多后续信息之后,才能确定其中...

2016-06-27 16:27:18

阅读数:506

评论数:0

switch 关键字的学习

1. 多 case 匹配bool paren(const char exp[], int lo, int hi){ stack<char> S; for (int i = lo; i <= hi; ++i){ case '(': case '[':...

2016-06-27 15:40:34

阅读数:505

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭