
C/C++
文章平均质量分 57
laciqs
这个作者很懒,什么都没留下…
展开
-
C语言的类型转换
C语言的类型转换很重要,经常出现,但是往往不被人注意,而在汇编代码当中就暴露无遗了。原创 2023-09-02 18:30:14 · 636 阅读 · 1 评论 -
Shadow API技术
深入浅出Windows API程序设计:核心编程篇》这本书介绍了Shadow API技术,此技术可以起到隐藏api调用的作用,从而显著增加调试和逆向的难度。在Win11 22H2自测通过,Debug版和Release版都可以,Debug版的区别就是MessageBoxW函数短一点,但是关键的call偏移没有变。但是里面给的示例代码由于严重依赖于操作系统版本,不要说Win11,在部分Win10上都会出现崩溃,这很不利于学习。所以按照书中原来的思路是肯定不行的,需要自己手动修正新代码的偏移。原创 2023-09-02 18:40:03 · 305 阅读 · 0 评论 -
《算法竞赛入门经典》勘误表
0. 前言:“要学好C语言,绝非熟悉语法和语义这么简单”不太正确,语言是语言,算法是算法,不能说算法厉害了才算把语言学好了(作者说如果把”学好“改成”用好“就更明白了)。“学习C语言的过程是痛苦的”,有点吓人,其实C语言是很好学的……也许作者逻辑思维太厉害,所以对语法这种语文类型的内容不太敏感(作者对此回复说对语言并不是不敏感,学习C语言的过程是痛苦的是学生们的感慨,只是照搬)。1.原创 2011-07-25 17:50:36 · 3549 阅读 · 2 评论 -
C语言常见误区
1. void main()、void main(void)、main()以及int main():有人说前两种是完全不对的,只不过是编译器支持而已,其实这样说也不太对。实际上,C99已经允许为main声明“由实现定义的行为”(返回类型可以不是int型,也可以不是标准规定的参数),所以这样的行为是合法的。但是看起来很难看并且可移植性不好,最重要的是别人一看这样的代码就知道你C没学过关。第三原创 2011-07-09 16:04:02 · 1094 阅读 · 0 评论 -
如何批量编译连接程序?
最近有一个需求,一个目录下有N多个.c文件,想办法把它们全部编译。用VC建个工程把它们全扔进去构建是不行的,连接的时候会出错,因为VC最后只想生成一个exe文件,这样最后只能得到一堆obj文件。后来知道了VC的编译器是cl.exe(如果你的cmd不识别cl,请查看这篇文章:http://blog.youkuaiyun.com/wangningyu/article/details/4830920,设置环原创 2012-07-23 21:42:46 · 1295 阅读 · 4 评论 -
一道与预处理有关的题目
在看雪看到了刘涛涛出的一道题:http://bbs.pediy.com/showthread.php?t=130889过去曾经做过类似的,这里再给个解释的资料:The # operator has a similar difficulty, by the way. If #x appears in a replacement list, where x is a macro paramet原创 2012-07-21 20:53:29 · 784 阅读 · 0 评论 -
指针的本质
#include int main(int argc, char *argv[]) { int a[5] = { 1, 2, 3, 4, 5 }; unsigned int p; for ((int *)p = a; (int *)p < a+5; p += sizeof(*a)) printf("%d ", *(int *)p); printf("\n原创 2012-07-09 21:42:46 · 1081 阅读 · 2 评论 -
strcpy()的简洁实现
char *strcpy(char *dest, const char *src){ if (dest == src) return dest; assert((dest != null) && (src != null)) char *temp = dest; while (*dest++ = *src++) // 注意这里原创 2011-10-01 17:38:56 · 888 阅读 · 0 评论 -
toupper()与tolower()的编写
原理:大写字母ASCII码的第5位为0,小写字母的为1。#include int toupper(int ch){ return ch & 0xDF;}int tolower(int ch){ return ch | 0x20;}int main(int argc, char *argv[]){ printf("%c %c\n", toupper('A'), tol原创 2012-06-11 14:58:38 · 1238 阅读 · 0 评论 -
qsort()的compare函数示例
超级简洁的写法: int compare_parts(const void *p, const void *q){ return ((struct part *) p)->number number;}原创 2011-08-05 11:24:11 · 1665 阅读 · 3 评论 -
C语言中整型运算取Ceiling问题
此题来自:《Linux C编程一站式学习》假设变量x和n是两个正整数,我们知道x/n这个表达式的结果要取Floor,例如x是17,n是4,则结果是4。如果希望结果取Ceiling应该怎么写表达式呢?例如x是17,n是4,则结果是5;x是16,n是4,则结果是4。网上对这道原创 2011-08-05 11:11:48 · 3361 阅读 · 0 评论 -
简易统计计算器——C++版
#include #include #include using namespace std;int main(){ cout << "Please enter a series of numbers to calculate the average原创 2011-08-05 10:33:13 · 810 阅读 · 0 评论 -
使用De Morgan法则来理解代码
De Morgan法则:!(x && y) → !x || !y!(x || y) → !x && !y这有什么用呢?举个例子,我们来看看这个求三位数中最小值的代码:if (x < y && x < z) min = x;else if (y <原创 2011-07-14 19:27:26 · 2041 阅读 · 0 评论