随笔分类 - 编程语言
摘要:每次在vs中编译项目时,生成的可执行程序版本号自动+1
阅读全文
摘要:一个长度为len的字符串,对其循环右移n位[期望]char str[] = "abcdefg";右移3次后,变成"efgabcd"[思路]思路1.如果用每移动一次,就要把整个字符串整体移动一次的方法,显得太费劲了。我们可以用空间换时间,通过内存拷贝来实现。需要新申请一块相同大小的内存,把原字符串的后n个字节拷贝到它的开始地址,把原字符串的前(len-n)个字节拷贝到它的(开始地址+n)处。为便于查看结果,我们先定义一个打印字符串的函数void print_str(char *str);void print_str(char *str){ int i,le
阅读全文
摘要:给定一个含有n个元素的字符串,实现逆序。这是个很基础的问题,实现方式也是很常见的c语言思路。虽然简单,但是仍然记录下来。[期望]比如char str[] = "abcdefg";逆序后为:"gfedcba";[思路]分别从字符串的头和尾部向中间进发,依次交换头尾的值,直到在中间相遇。代码:#include #include void print_str(char *str){ int i,len; if (str == NULL) { return; } len = strlen(str); for(i=0; i<len; i++) { ...
阅读全文
摘要:查找单词序列在文章中出现的次数[期望]对于测试char *substrs[3] = {"ffff", "cindy", "Bill"};char *str = "Hellocindy, BillGatesBill---cindy-ffffffxxx23424cindycindy";找到的结果应该是:"ffff" => 3,"cindy" => 4,"Bill" => 2[抱怨]c语言没有基础数据结构hash用来方便地表示上面这种结果,像p
阅读全文
摘要:最近在纸上写一个已排序数组的合并时,花了超过预期的时间。仔细想想,这种要放到毕业找工作那会两下就出来了,原因还在于工作后对基础没有重视,疏于练习。说开一点,现在搜索引擎的发达确实给问题的解决带来了便利,但是久而久之,对很多东西的掌握其实并不深入。比如淘宝系的人经常分享一些linux内核IO优化相关的内容,咋看一下,原来是这样,觉得也不难嘛,其实不然,如果给一张白纸让你自己把流程画出来,讲解清楚,还有有难度的。这里问题的关键在于很多时候我们只是通过互联网的便利了解某个东西,实际上并不掌握它。纸上得来终觉浅,绝知此事要躬行。古人早就把道理告诉了我们,只是知易行难而已。现在IT界新语言、新概念层出不
阅读全文
摘要:转自:http://www.blogjava.net/killme2008/archive/2012/05/22/378885.html你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西。怎么下手呢?如何开始呢?我的习惯是这样:1.首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的、功能、基本使用有个大概的了解。2.阅读项目的文档,重点关注类似Getting started、Example之类的文档,从中学习如何下载、安装、甚至基本使用该项目所需要的知识。3.如果该项目有提供现成的example工程,首..
阅读全文
摘要:关键词:双向链表 其实是比较简单的问题 经验丰富的人就不用往下看了。驱动中把所有找到的盘插入到双向链表尾(listHead),然后再从头遍历链表,把符合条件的结点放入另一个链表(disks)中。默认listHead中的第一个结点肯定符合条件,将其插入disks尾。完成这个动作之后,再取第二个结点时,listHead里的链接就变了。看起来很奇怪的问题。LIST_ENTRY listHead;
LIST_ENTRY disks;struct DISK_INFO { LIST_ENTRY entry; ... }...
pListEntry = listHead.Flink;
Di...
阅读全文
摘要:在所有的预处理指令中,#Pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。 (1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:#Pragma message(“消息.
阅读全文
摘要:我们从 UNREFERENCED_PARAMETER 开始吧。这个宏在 winnt.h 中定义如下:#define UNREFERENCED_PARAMETER(P) (P) 换句话说 UNREFERENCED_PARAMETER 展开传递的参数或表达式。其目的是避免编译器关于未引用参数的警告。许多程序员,包括我在内,喜欢用最高级别的警告 Level 4(/W4)进行编译。Level 4 属于“能被安全忽略的事件”的范畴。虽然它们可能使你难堪,但很少破坏你的代码。例如,在你的程序中可能会有这样一些代码行:int x=1; 但你从没用到过 x。也许这一行是你以前使用 x 时留下来的,只删除了..
阅读全文
摘要:原始来源不详 整理自:http://topic.csdn.net/u/20101213/23/76e10ff4-23fb-43a7-8c71-ed42796e58cd.htmlC++各大有名库的介绍在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。1、C++标准库已被实践证明为有工业级别
阅读全文