C & C++
文章平均质量分 75
WXS_Frog
This is my personal blog, the content of this site is my own personal opinion and does not in any way represent my employer. All postes here are licensed under a Creative Commons License.You can also contact me by dhuwxs@163.com Enjoy.
展开
-
常用数据类型在32位和64位CPU上的字节数比较
测试语句(C语言):printf("char[%d] char*[%d] s_int[%d] int[%d] u_int[%d] float[%d] double[%d] long[%d] LL[%d] UL[%d]\n", sizeof(char),sizeof(char *), sizeof(short int),sizeof(int),sizeof(uns原创 2014-02-17 15:57:00 · 361 阅读 · 0 评论 -
C++ 智能指针详解
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared转载 2014-03-10 16:27:58 · 330 阅读 · 0 评论 -
C++句柄类
一、句柄类思想 Thinking in c++ 第一卷的中文翻译实在是无法忍,偏偏我就有这么一本(还是合订本的)。 幸好读到了一个从前没意识到的问题,也算是值了:句柄类,也叫Cheshire Cat。 问题背景是这样的:1)在极为安全的领域,即使核心实现已经封闭在库中不可见,但是头文件中的变量定义仍然可能会曝露一些内部信息; 2)在设计初期,实现部分固然需要经常变动,连原创 2014-03-08 11:05:53 · 1026 阅读 · 0 评论 -
友元函数和友元类
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和原创 2014-03-07 14:43:12 · 486 阅读 · 0 评论 -
memset函数详解
函数介绍void *memset(void *s, int ch, size_t n);函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法memset函数详细说明1。void *memset原创 2014-03-07 15:17:06 · 678 阅读 · 0 评论 -
语法盐
语法盐(英语:syntactic salt)是指在计算机语言特别设计,不容易产生不良代码的特性。语法盐就像一个程序员必须跳过的圈,来证明他们知道将会发生什么,而不是只表达一个程序行为。比如,在没有额外的语言明确地说明意图的情形下,Java不允许将一个声明为float类型的变量赋值给一个声明为int类型的变量,但是C和C++会自动把float类型的变量缩短并赋值给int类型的变量。在C#中,原创 2014-03-06 11:28:40 · 877 阅读 · 0 评论 -
语法糖
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。语法糖的例子for 循环一个例子是C语言中的for 循环:原创 2014-03-06 11:26:09 · 620 阅读 · 0 评论 -
C++智能指针的设计和实现
一、智能指针 在C++语言编程时,当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计原创 2014-03-10 16:57:20 · 561 阅读 · 1 评论 -
C++中cout输出顺序(VC6)
c++中对于cout后面的表达式的求值顺序是未定义的,具体的运行结果要由编译器的实现来决定.本人是在vc++ 6.0下编译的.测试代码:#include "stdafx.h"#include using namespace std;int add(){ cout<<"function add"<<endl; return 1;}int sub(){原创 2014-03-11 13:00:12 · 1196 阅读 · 0 评论 -
给定一个整数实现奇偶比特位互换-改进方案
刚看到一篇《给定一个整数实现奇偶比特位互换》,笔者做了一下小小的改进,在最后。创新工场笔试,有个题目叫做定义一个宏实现,给定一个整数,进行奇偶比特位互换,比如整数6互换之后就变成9,当时毫无头绪,回头想想也不是很难思路如下:左移一位,则偶数位到了奇数位,将偶数位清零右移一位,则奇数位到了偶数位,将奇数位清零 让两者相加,则得结果原创 2014-02-20 10:55:43 · 729 阅读 · 0 评论 -
异或运算原理常见作用(精华在最后)
定义 异或(xor)是一个数学运算符。它应用于逻辑运算。异或符号为“^”。 其运算法则为a异或b=a'b或ab'(a'为非a)。 真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。简单点说就是异或的两个值'相同为假,不同为真'。 异或运算法则 1. a ^ b = b原创 2014-02-17 09:58:32 · 847 阅读 · 0 评论 -
atoi 和 itoa的实现
atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:1, atoi原型: int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。#include原创 2014-02-17 16:38:14 · 705 阅读 · 1 评论 -
直接插入排序的三种实现
直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。原创 2014-02-18 11:51:12 · 432 阅读 · 1 评论 -
冒泡排序的三种实现
冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。 按照定义很容易写出代码:[cpp]转载 2014-02-18 11:15:16 · 390 阅读 · 1 评论 -
error C2664: 'strcmp' : cannot convert parameter
int strcmp(const char* str1, const char* str2); 这个函数是C标准库的函数,处理的是C风格0结尾字符数组字符串。 C++标准库中的string类有可以直接使用的,=,==,!=运算符,通常也用不到这个函数。 _____________________________________________原创 2014-07-10 10:42:00 · 1694 阅读 · 0 评论