C/C++
Tommy_wxie
Tommy_wxie
展开
-
c++ vector resize & reserve
首先必须弄清楚两个概念:1.capacity 指容器在分配新的存储空间之前能存储的元素总数。2. size 指当前容器所存储的元素个数 在弄清这两个概念以后,很容易懂resize和reserve的区别 1).reserve表示容器预留空间,但并不是真正的创建对象,需要通过insert()或push_back()等创建对象。转载 2017-08-09 15:58:39 · 2210 阅读 · 0 评论 -
双链表的初始化,建立,插入,查找,删除
//////////////////////////////////////////////双链表的初始化,建立,插入,查找,删除。 ////Author:Wang Yong // //Date: 2010.8.19 ///////////////////转载 2013-02-02 16:04:48 · 909 阅读 · 0 评论 -
探索c++的函数pow()的实现方法·数学与程序设计的结合(zz)
计算t的m次幂的方法:(探索c++的函数pow()的实现方法,数学与程序设计的结合)源程序下载:http://pjy.studio.googlepages.com/powP.cpp或到我的收藏下载。 由于c++刚学完函数一章,而练习需要用pow()这个函数,于是就特发奇想,想自己能否写一个能实现pow()功能的函数,经过一段努力,算有了一些结果。 众所周知,po转载 2012-12-31 17:12:56 · 2327 阅读 · 0 评论 -
C语言文件操作函数大全
C语言文件操作函数大全11.fopen(打开文件) 相关函数 open,fclose 表头文件 #include 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r 打开只读文件,该文件原创 2012-05-19 14:48:20 · 1026 阅读 · 0 评论 -
枚举类型
枚举为你在程序中定义的整型,枚举的定义以关键词enum开头,可能紧跟着一个标识符,且包含一系列可能的类型值,并且每一个均具有名子: enum [identifier] {enumerator-list};下面的例子定义枚举类型enum color: enum color {black, red, green, yellow, blue, white = 7, gray};原创 2012-05-21 15:43:31 · 1416 阅读 · 0 评论 -
typedef用法详解
也许新手用这个关键字不多,但它却是一个很有用的关键字,可以使代码模块化程度更好(即与其它代码的关联较少),在C++中还是实现Traits技术的基础,也是模板编程的基本语法之一。若说变量定义是为变量命名,而typedef(或称为类型定义)就是为类型命名。既然都是命名,那就会有很多类似的地方。而变量定义我想大家都会使用,因此类型定义也必然会使用。类型定义的语法可以归结为一句话:只要在变原创 2012-05-21 15:04:08 · 3147 阅读 · 0 评论 -
优化程序-- -函数指针数组及驱动表程序解读
先需要了解函数指针数组的使用,依旧通过最简单最容易理解的例子来讲解。 首先看下面这个函数指针数组的使用实例。 1. #include 2. #include 3. 4. 5. int Sum(int a, int b) 6. { 7. return a + b; 8. } 9.原创 2012-05-21 15:08:45 · 1295 阅读 · 0 评论 -
memchr 函数
原型:extern void *memchr(void *buf, char ch, unsigned count);用法:#include 功能:从buf所指内存区域的前count个字节查找字符ch。 说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。 举例:// memchr.c #include原创 2012-05-10 16:22:09 · 4651 阅读 · 0 评论 -
C语言关键字 - auto和register
关键字概述很多朋友看到这儿可能会有疑问,往往其它讲C语言的书籍都是从HelloWorld,数据类型开始C语言学习的,为什么我们要从C语言的关键字开始呢?关于这点,我有两点需要说明:本章节面向的读者对象是有一定的C语言基础知识的朋友(至少应该学习过大学里的C语言程序设计等类似的课程) 本章节结合了作者多年嵌入式工作、研究、教学经验而作,由计算机底层硬件到上层软件设计融会贯通,中间有大量的转载 2012-05-18 17:46:29 · 4569 阅读 · 0 评论 -
C语言关键字 - 铁布衫:const
铁布衫:const描述:相传C世界中出现了一件极品装备const,它能的出现,让天下所有的刺客,黑客都失业了,在它的保护下,所有的变量都可以完好无损。作用:const是constant的简写,表示海枯石栏,恒定不变,一旦相伴,永不“心”变。只要一个变量前面用const来修辞,就意味着该变量里的数据可以被访问,不能被修改。我们其实还可以给它起个更雅的名字叫:readonly。虽然理解起c转载 2012-05-18 19:01:25 · 1013 阅读 · 0 评论 -
C语言关键字 - 专一王子:volatile
专一王子:volatile描述:每个变量和他的名字一样很善变,有时候它善变是发自内心的,有时是外部因素决定的,只有volatile变量才会表里如一,因此获得了专一王子的美誉。作用:volatile字面意思是易挥发,易变化的意思,它修辞的变量表示该变量的值很容易由于外部因素发生改变,强烈请求编译器要老老实实的在每次对变量进行访问时去内存里读取。可能上面说的还不是很清楚,我们换个例子来说,你明转载 2012-05-18 17:52:16 · 1947 阅读 · 0 评论 -
C语言数组与指针详解
好多同学都说:“老师,我看到指针就晕!”,说实话,见过晕血的,见过晕车的,晕指针的到是第一次听说! 我们先来分析一下晕车的原理,再来对比一下为什么晕指针。 晕车,是因为耳朵里的一个器官对外界的振动太敏感,导致身体调节功能紊乱,系统不能正常工作,轻则,晕点,中则,吐点,重则,“重启”(倒地)。时间长了,知道自己晕车,于是,看到公交车,TAXI,火车,自行车,都晕!这样转载 2012-05-18 17:35:12 · 2274 阅读 · 5 评论 -
strrev函数
函数原型:extern char *strrev(char *str)参数说明:str为源字符串,即待逆置的字符串。 所在库名:#include 函数功能:实现字符串str的逆置。 返回说明:返回逆置字符串的指针。其它说明:暂时无。实例:#include string.h>#include stdio.h>int main原创 2012-05-10 15:58:31 · 1969 阅读 · 0 评论 -
strcpy,strncpy函数
函数原型:extern char *strcpy(char *dest,char *src) 或者extern char *stpcpy(char *dest,char *src)参数说明:dest为一个目的字符串的指针,src为一个源字符串的指针。 所在库名:#include 函数功能:把src所指的以“/0”结束原创 2012-05-10 15:38:53 · 2878 阅读 · 1 评论 -
用指针实现整型数据的加法
#include int *add(int a,int b){ int c = 0; //原题没有这行 int *p = NULL; p = &c; //原题没有这行 *p = a+b; return p;}int main(void){ printf("%d/n",*add(2,3));转载 2013-02-02 16:08:43 · 875 阅读 · 1 评论 -
单链表的初始化,建立,插入,查找,删除。
//////////////////////////////////////////////单链表的初始化,建立,插入,查找,删除。 ////Author:Wang Yong // //Date: 2010.8.19 ///////////////////转载 2013-02-02 16:04:24 · 1184 阅读 · 0 评论 -
循环单链表的初始化,建立,插入,查找,删除
//////////////////////////////////////////////////循环单链表的初始化,建立,插入,查找,删除。 ////Author:Wang Yong // //Date: 2010.8.20 //转载 2013-02-02 16:05:49 · 1332 阅读 · 1 评论 -
C++中clock用法
clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。该函数返回值是硬件滴答数当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:#include #include stdlib.h>#include int main(void){long i = 10000000L;原创 2017-08-09 15:57:55 · 8440 阅读 · 0 评论 -
Ubuntu下boost库的编译安装步骤及卸载方法详解
最近由于编译一个程序用到了C++的boost库,所以便安装了这个库。但是,其中遇到了一些小问题。所以记录下来,以供别人参考。首先说一下我的环境:Ubuntu 12.04 32bit, gcc 4.6.3其实在ubuntu下,可以用一下命令直接安装sudo apt-get install libboost-dev但是,我这样安装以后,编译程序时出现了很多错误,而且都原创 2017-07-09 23:47:12 · 3836 阅读 · 0 评论 -
编译 链接和加载
1. 序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将>中部分内容略读了一遍,主要是关于编译,链接和加载这块的。于是顺便做个笔记,方便以后回顾。基本上知道了这些,对于编译,链接和加载过程中产生的各种问题,应该就能从根本上理解并解决了。其实以前上学时也看过那本经典的>,当时还写了篇>,不过此次会更细致深入地了解下整个编译链转载 2016-08-31 21:24:37 · 2117 阅读 · 0 评论 -
为什么基类的析构函数是虚函数?
1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 复制代码复制代码#includeusing namespace std;原创 2015-02-05 14:33:36 · 1192 阅读 · 0 评论 -
C中调用C++与C++调用C
转自:http://blog.csdn.net/devil_2009/article/details/6734760首先,在C中调用C++:将 C++ 函数声明为``extern "C"''(在你的 C++ 代码里做这个声明),然后调用它(在你的 C 或者 C++ 代码里调用)。例如:[cpp] view plaincopy// C++ code转载 2015-01-22 17:38:42 · 1167 阅读 · 0 评论 -
C语言位域精解
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示转载 2015-02-05 16:10:57 · 1470 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
C++析构函数为什么要为虚函数1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载原创 2015-02-05 14:27:28 · 1271 阅读 · 0 评论 -
C++程序员必看书单
C++: Prata《C++ Primer Plus》:基础,第一本书。(之前的版本也可,不过推荐最新的) Lippman《Inside C++ Object Model》:初级,加深语言层次上的理解。不过有点小老了。里面的cfront编译器早退出江湖好久了。思想值得学习 侯捷《STL源码剖析》:第三本书,中级,深入STL Vandevoor转载 2014-10-21 16:22:37 · 1381 阅读 · 0 评论 -
C++标准库中bitset类型
虽然在C++的基本类型中,似乎没有二进制这个重要的类型,但是在C++标准库中却提供了能够处理二进制位的有序集合类型,这就是bitset类型,使用该类型时需要先包含该头文件并进行声明:[cpp] view plaincopy#include using namespace std; 该类型存储的是一个有序的二进制数据的集合,该集合的长度值需要在构造该转载 2014-10-21 15:15:25 · 868 阅读 · 0 评论 -
C++ bitset类的使用与简介
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:#i nclude using std::bitset;3.5.1 bi转载 2014-10-21 14:30:32 · 836 阅读 · 0 评论 -
通过例子看数组与指针的区别
#include char *fun(void){ char str[] = "hello world !/n";//gcc编译不通过,pointer_arrary.c:7: warning: function returns address of local variable // char *str = "hello world !/n";//返回hello world !转载 2013-02-02 16:10:14 · 746 阅读 · 0 评论 -
求32位机器上unsigned int的最大值及int的最大值
#include int main(int argc, char *argv[]){ unsigned int max_int = 0-1; printf("The max value of unsigned int on 32 machine: %u/n", max_int);}#include int main(int argc, char *argv[]转载 2013-02-21 09:11:06 · 3525 阅读 · 0 评论 -
不用sizeof来求出int的大小(程序)
#include int main(int argc, char *argv[]) { int a[2]; unsigned int add1 = &a[0]; unsigned int add2 = &a[1]; printf("The address of a[0] is %u/n",add1); printf("The address转载 2013-02-21 09:09:59 · 1007 阅读 · 0 评论 -
内存分配函数
函数原型:extern void *calloc(int num_elems, int elem_size)参数说明:num_elems表示为分配内存的元素的个数,elem_size表示元素所占的字节数。 所在库名:#include 函数功能:为具有num_elems个长度为elem_size元素的数组分配内存。 返回说明:返回void *类型。原创 2012-05-10 16:03:03 · 1716 阅读 · 0 评论 -
c++中的const与指针
在c/c++中,指针本身就是一个难点,再加与const的结合,常会产生许多让人费解的地方,在这里做个小结。 1.定义const对象const int buffsize=512;因为常量定义后就不能修改,所以定义时必须初始化.const i,j=0; //error,i没有初始化2.const对象默认为文件的局部变量//file1.ccextern const int原创 2012-04-07 21:58:17 · 1147 阅读 · 0 评论 -
真正理解一维数组的数组名的真正含义
这一段代码的运行结果如下:从运行结果我们知道,&a和a的值是一样的,但是a + 1 和 &a +1的结果就完全不一样,这是为什么呢?哎,为什么总是这么多,今天早上看到百度新闻上面竟然报道有些地方在抢购矿泉水,为什么呢?又和抢盐运动一样?哦哦,我们知道a是数组名,代表数组的首地址,a+1,就是数组的下一个元素的地址。a = 0xbfea014c a + 1 = 0xbfea0150原创 2012-04-07 21:48:44 · 2030 阅读 · 0 评论 -
C语言函数返回值的相关问题
程序一:int main(){ int *p; int i; int*fun(void); p=fun(); for(i=0;i { printf("%d\n",*p); p++; } return 0;};int* fun(void){ st原创 2012-03-20 18:21:29 · 11811 阅读 · 7 评论 -
C语言面试题
1. 以下代码中的两个sizeof用法有问题吗?void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母{ for( size_t i=0; i if( 'a' str[i] -= ('a'-'A' );}char str[] = "aBcDe";cout UpperCase原创 2012-03-14 11:32:49 · 1427 阅读 · 0 评论 -
借刀杀人,不使用任何中间变量实现strlen
2009腾迅校园招聘笔试题:不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数。函数接口声明如下:int strlen(const char *p); 思路分析:在字符串中通常可以利用最后一个结束符’/0’,但此处参数为const,只读,那么我们不能打他的主意 函数运行过程中不占用内存基本不可能,除非都使用了寄存器。“不使用中间变量”只是说程序员不能原创 2012-03-15 10:12:03 · 1115 阅读 · 0 评论 -
引用与指针的比较
<!--p {margin-bottom:0.08in}-->引用与指针的比较引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。intm;int&n = m;n相当于m的别名(绰号),对n的任何操作就是对m的操作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎原创 2012-03-15 14:33:03 · 860 阅读 · 0 评论 -
一语句实现x是否为2的若干次幂的判断
一语句实现x是否为2的若干次幂的判断#define is2*n(x) ((x & (x - 1))? 0 : 1)int main(void) { int m = 512; cout //即当m中只有一位为1时,才为若干次幂值//若有两个及以上1,则(m & (m - 1))不为0,输出0,表示不为2的若干次幂原创 2012-03-15 10:17:53 · 5169 阅读 · 0 评论 -
揭开嵌入式C面试题背后的玄机
1、 int a=2,b=11,c=a+b++/a++; 则c值为多少?【考点】编码规范。表面上考察你对运算符优先级的掌握程度,但实际上优先级这些玩意很难死记硬背得住?大家的疑惑不就是运算符的结合顺序么?那么如何去避免呢?c=a+((b++)/(a++))不就行了么,其实问题背后考察的是你的编码规范,如何写清晰易懂的代码,如何在一个团队中让自己的代码狠容易毫无偏差的让新人看懂~原创 2012-03-15 10:03:36 · 1012 阅读 · 0 评论 -
C语言运算符优先级 详细列表
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名原创 2012-03-13 20:34:11 · 1769 阅读 · 1 评论