![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++基础知识
潼潼水势向江东
这个作者很懒,什么都没留下…
展开
-
C++字符串数字的比较
假设:有这么一个字符串集合,"1","2","3",........."10000000", "40","20". 要求进行排序。 基本想法: 把字符串转化为数字,进行对比。 但是有一个问题:也许这个字符串的长度超过了 普通整数的范围了,怎么办? 有人说用 long long ,可以,但不优雅,而且无法对更加大的数字进行排序。 解决方法: 使用大数的思想。代码如原创 2017-04-10 19:15:12 · 6039 阅读 · 1 评论 -
按位与(&)按位或(|)按位异或(^)按位取反(~)左移(<<)右移(>>)
基础知识: 1. and(&)运算 (按位与) and运算通常用于二进制取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数. 相同位的两个数字都为1,则为1;若有一个不为1,则为0。 00111 11100 (&或者and) ----------------原创 2012-09-21 14:57:39 · 30530 阅读 · 1 评论 -
内存管理
内存溢出与内存泄漏都会对软件运行的稳定性产生影响,因此,在使用new和delete操作符从堆中申请和释放内存块应该注意避免这些情况的发生。在本软件的实际应用中,采用了以下策略:① 内存分配未成功,则不使用。在使用前对指针进行检查,如果new操作符无法分配到所需的内存,则返回NULL。② 在程序中增加内存不足处理函数,用来增加程序的健壮性。③ new与delete配套使用,即每申请一块内原创 2012-10-20 19:47:50 · 609 阅读 · 0 评论 -
C++对象序列化简介与选型
C++对象序列化,与文件保存类似,但是不一样。比如在运行过程中,需要保存某个对象,是串行化特有的功能。面向对象的语言都有这个功能,比如java。下面是转自wiki 的介绍:http://code.google.com/p/plumgo/wiki/HSNNS_ObjectSerializationC++ Serialization Schemes常见C++序列化方案转载 2013-04-16 09:12:18 · 1761 阅读 · 0 评论 -
阶乘算法优化
原文地址:http://blog.csdn.net/yxnk/article/details/1665052我的感言:首先,有一个概念上的认知,即根据阶乘定义而来的常规算法,如果是long int型只能正确计算到12左右的阶乘,如果用double型只能正确计算170左右的阶乘,当然这些只是大概,需要结合实际平台进行验证。下面是原文:序大数阶乘的计算是一个有趣的话题,从中转载 2013-04-10 15:02:15 · 14768 阅读 · 1 评论 -
VC 全局变量为什么还需要 extern
一般来讲,可以在某CPP中定义全局变量 int iNum;如果另一个一个cpp文件中需要使用此全局变量,则需要加上引用定义,例如extern int iNum; 才可以使用!疑:既然是全局变量,任何文件下都可以使用,为何还要加个 “extern int iNum” 的声明?答:全局变量的作用域为其定义位置开始,至文件结尾,也即只有文件作用域。为了使全局变量的作用原创 2013-04-08 15:10:26 · 997 阅读 · 0 评论 -
自说动态内存分配与释放
动态内存一般指的是堆内存!堆内存可以很大,不像内存中栈的大小大约就2M左右。有的时候,堆内存需要传递。 有一种简单的传递方法,即是采用函数返回值的形式来传递动态内存。使用后,内存释放可以在程序的任意位置释放。举例如下:char *GetMemory3(int num) { char *p = (char *)malloc(sizeof(char) * num); return p原创 2013-04-07 16:13:53 · 704 阅读 · 0 评论 -
C代码优化方案
原文地址 :http://www.uml.org.cn/c++/200811103.asp#_Toc110958661C代码优化方案 2008-11-10 作者:王全明 来源:csdn 目录C代码优化方案1、选择合适的算法和数据转载 2013-04-07 13:13:58 · 637 阅读 · 0 评论 -
编程语言重要吗?一点感慨
CSDN:你学习过很多语言,并且能运用自如,对编程新手有什么好建议吗?陈抒:十多年的时间让我熟练掌握C++、Java、C#、JavaScript和Bash,但这并不是一件了不起的事情。幸运的是我对C++的深入研究与应用奠定了我扎实的基础,因此有利于学习其他高级语言。我对新手的建议是:多上CSDN写博客。好记性不如烂笔头。尤其是技术,非常细节。如果能够在博客中清晰的表达出来,那就说明原创 2013-01-14 17:04:02 · 1231 阅读 · 0 评论 -
R树空间索引
转自: http://blog.csdn.net/zhouxuguang236/article/details/7898272R树在数据库等领域做出的功绩是非常显著的。它很好的解决了在高维空间搜索等问题。举个R树在现实领域中能够解决的例子吧:查找20英里以内所有的餐厅。如果没有R树你会怎么解决?一般情况下我们会把餐厅的坐标(x,y)分为两个字段存放在数据库中,一个字段记录经度,另一个字转载 2013-01-07 11:09:35 · 575 阅读 · 0 评论 -
四叉树与八叉树
转自: http://blog.csdn.net/zhanxinhang/article/details/6706217前序四叉树或四元树也被称为Q树(Q-Tree)。四叉树广泛应用于图像处理、空间数据索引、2D中的快速碰撞检测、存储稀疏数据等,而八叉树(Octree)主要应用于3D图形处理。对游戏编程,这会很有用。本文着重于对四叉树与八叉树的原理与结构的介绍,帮助您在转载 2013-01-07 11:18:08 · 741 阅读 · 0 评论 -
C++ 三维数组的理解与动态分配
三维数组有点不好理解。很多人认为可以用 数组的数组来进行理解,或者可以用立方体来理解。而我认为可以用 树结构来理解。比如 int array【3】【4】【5】,可以认为从根节点出来,首先有3个一级节点,每个一级节点有4个二级节点,每个二级节点有5个三级节点。 三维数组的动态分配,要注意delete,如下: int z = 2; int y = 5; int x = 6;原创 2013-07-06 17:11:35 · 2296 阅读 · 0 评论 -
C++ this指针的理解 .
先要理解class的意思。class应该理解为一种类型,象int,char一样,是用户自定义的类型。(虽然比int char这样build-in类型复杂的多,但首先要理解它们一样是类型)。用这个类型可以来声明一个变量,比如int x, myclass my等等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个,就好解释this了,my里的this 就是指向my的指针转载 2013-06-23 13:01:59 · 603 阅读 · 0 评论 -
string,wstring,cout,wcout 与中文字符的输入输出 .
转自:http://blog.csdn.net/efeics/article/details/8044014 c++中,可以直接利用string及cout进行中文的存储及输出:#include #include using namespace std; void main() { string s1="第一"; cout}转载 2013-07-30 11:22:45 · 10509 阅读 · 0 评论 -
函数模板
为了加深对函数模板的理解,我们再来看一个求三个数的最大值的例子:#include using namespace std;//声明函数模板templatetypename T> T max(T a, T b, T c);int main( ){ //求三个整数的最大值 int i1, i2, i3, i_max; cin >> i1 >> i2 >> i3; i转载 2017-02-09 14:32:45 · 1836 阅读 · 0 评论 -
C++对象内存分配
C++ 的对象内存分配。1、第一版 可以把class 当做 struct,每个成员逐个占有空间。每个成员占用的空间是 sizeof merber.2、第二版 注意对齐的问题 对齐是因为 处理器来进行的。在32位机器上 主要需要把 char 成员从 1Byte,补充到 4Byte。3、第三版 考虑指针 其实指针也还好,固定占 4byte。原创 2016-07-22 16:40:43 · 572 阅读 · 0 评论 -
C++ 之 Excel文件读写 之 简便方法
excel 文件的简单读写方法原创 2015-11-13 15:04:41 · 64014 阅读 · 17 评论 -
栈的应用举例-进行算术运算
这个例子是来自于严蔚敏的《数据结构》的栈那一节。 但是我进行了一些简单的修改,确保编译通过。目的:利用栈 计算 “3*(7-2)”这样的字符串的算术运算的结果。 共有3个代码文件,如下:1、mystack.h #pragma once#define maxsize 30typedef struct{ char data[maxsize+1];原创 2014-05-28 22:04:07 · 2391 阅读 · 0 评论 -
字符转为运算符
以前看到一道题,硕士一个字符串,如“ 12+45”,让你计算出结果。 怎么替换字符“+”为加法符号? 今天发现在js里,或者php里,可以有eval 函数来完成这个功能。但是C/C++里,没有这个功能。 http://bbs.csdn.net/topics/100100631 详细论述了一下,还多复杂的。 结论是:hxDreamer提出的一种利用表达式解析的方法,转原创 2013-05-09 21:42:32 · 1573 阅读 · 0 评论 -
指针数组-个人体会
int *p[10];//指针数组,含有10个指针元素 也就是说每一个元素都是指针。先是解析[]表示它是一个数组,然后*表示指针,int表示为int型指针,即表示定义一个指针数组,含有10个int类型指针元素。 int * p,//原创 2014-05-26 20:35:49 · 761 阅读 · 0 评论 -
realloc函数详解
转载 http://blog.csdn.net/snlying/article/details/4005238真正认识 realloc 的工作方式。Posted on 2008-11-20 13:12 啊夏 阅读(142) 评论(0) 编辑收藏 网摘 所属分类: c/c++ realloc 用过很多次了。无非就是将已经存在的一块内存扩大。c转载 2013-10-11 16:52:35 · 2861 阅读 · 0 评论 -
C语言的那些小秘密之动态数组 .
转自 http://blog.csdn.net/bigloomy/article/details/6615012摘要的重要性是不言而喻的,每次发文章我都很纠结如何写出一个有特色的摘要来,能够以最为简短的文字向读者描述出我所要表达的东西。但是常常出现的问题是,摘要写得太简短了,读者看了不清楚文章究竟要讲啥;摘要写得稍微长点的话自然能够描述清楚所要表达的东西,但是却也出现了另外一个问题,就是读转载 2013-10-11 14:48:17 · 720 阅读 · 0 评论 -
不使用重载,可以使用Template
转自:http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html 1.模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版转载 2013-09-18 10:06:43 · 736 阅读 · 0 评论 -
类设计之 里氏代换原则
原文地址:http://book.51cto.com/art/200912/166943.htm10.3.2 里氏代换原则(Liskov Substitution Principle)里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的OOPSLA大会上发表的一篇文章《Data Abstraction and Hierarchy》里面提出来的,主要阐述转载 2013-09-18 09:25:07 · 606 阅读 · 0 评论 -
算法时间复杂度的计算
函数代码之时代复杂度计算:http://hi.baidu.com/dbfr2011818/item/f99fe7df0d65471bd68ed0ee定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”。 求解算法的时间复杂度的具体步骤是:[1] 找出算法中的基本语句:算法中执转载 2012-09-15 19:37:25 · 795 阅读 · 0 评论 -
算法空间复杂度
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。 当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1);当一个算法的空间复杂度与以2为底的n的对数成正原创 2012-11-08 21:06:44 · 903 阅读 · 0 评论 -
C/C++软件工程师就业求职手册
C/C++软件工程师就业求职手册 这本书,大家都说蛮好的,这是与《高质量程序设计指南-C/C++》相媲美的一本书。想从网上下载,又不好找。今天终于找到了,但不是pdf或者txt 电子版的,而是挂在网站上的,见链接http://space.itpub.net/batch.viewlink.php?itemid=668443很好,这下要抓紧时间看!原创 2012-11-08 22:00:18 · 2351 阅读 · 0 评论 -
栈溢出
int main(){int a[1000][1000];return 0;}就这样一段代码它就报stack overflow的错误123.exe 中的 0x00121637 处最可能的异常: 0xC00000FD: Stack overflow123.exe 中的 0x00121637 处有未经处理的异常: 0xC00000FD: Stack overflow解释:原创 2012-10-15 16:57:39 · 1535 阅读 · 0 评论 -
理解C++之std 与 stl
1,首先明确 std是一个 命名空间的名字。2,其次,明确STL是 Standard Template Library的缩写,即标准模板库。3,2者关系: In fact, all identifiers of the C++ standard library are defined in a namespace called std. 而STL原创 2012-09-12 21:22:15 · 9575 阅读 · 0 评论 -
数组指针使用探讨
开篇注意: int a[5]={1,2,3,4,5}; *p=&a; 切记a表示数组首地址(int型),&a表示数组地址(此刻是数组对象型)地址:http://blog.sina.com.cn/s/blog_4979ec3e010187zp.html从网络上看到这样一道有意思的题目,是关于数组与指针的问题,描述如下:main(){转载 2012-09-21 13:59:02 · 863 阅读 · 0 评论 -
typedef 函数指针的用法
地址:http://www.cnblogs.com/shenlian/archive/2011/05/21/2053149.htmltypedef 函数指针的用法在网上搜索函数指针,看到一个例子。开始没看懂,想放弃,可是转念一想,这个用法迟早要弄懂的,现在多花点时间看懂它,好过以后碰到了要再花一倍时间来弄懂它。其实很多时候都是这样,如果每次到难一点的内容,总想着下次我再来解转载 2012-09-21 13:18:11 · 710 阅读 · 0 评论 -
C里的宏注意
1. 在宏定义的#之前可以有若干个空格、制表符,但不允许有其它字符。宏定义在源程序中单独另起一行,换行符是宏定义的结束标志。如果一个宏定义太长,一行不 够时,可采用续行的方法。续行是在键人回车符之前先键入符号"\"。注意回车要紧接在符号"\"之后,中间不能插入其它符号。2.为了保证宏调用的独立性,作为算式的宏定义也应加括号;3.用do{}while(0)语句包含多语句防止错误 见http原创 2012-09-21 18:54:47 · 1086 阅读 · 0 评论 -
静态与非静态的区别
题:static 全局变量与普通的全局变量有什么区别?static 局部变量和普通局部变量有什么区别? static 函数与普通函数有什么区别?答:1,static 全局变量与普通全局变量的区别:前者在主函数之前就要被初始化,(2 分)后者无要求。 2,static 局部变量和普通局部变量的区别:static 全句变量是所有函数共享的变量,在一个函数使用完它原创 2012-10-08 17:27:09 · 412 阅读 · 0 评论 -
友元函数
转自http://blog.csdn.net/liubinstud/article/details/6134125友元函数(friend function)1. 什么是友元函数? 一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员2. 友元函数的用处体现在哪里? 2.1 使用友元函数可提高性能,如:用友元函数转载 2012-10-08 17:10:56 · 1019 阅读 · 0 评论 -
宏与内联函数(面试常考)
先记住2者区别,内联函数和宏的区别在与,(1)宏使用预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。(2)内联函数可以访问对象的私有成员函数,内联函数在C++里面应用最广的,应该是用来定义存取函数。 (这就是一般类的成员函数默认为inline的原因)转载:http://blog.csdn.net/fisher_jiang/article/details/2472210转载 2012-09-17 11:54:48 · 753 阅读 · 0 评论 -
解析char *p与char p[] 区别
转自: http://blog.csdn.net/aining0809/article/details/6024462主要解析的问题:问题1:#include "stdio.h"char *get_string_1(){ char p[] = "hello world!"; return p;}char *get_string_2转载 2012-09-17 10:14:17 · 1064 阅读 · 0 评论 -
const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
转自:http://blog.csdn.net/linyaoxin/article/details/3160977const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义2008-07-25 11:04几个容易混淆的概念,记在这里一、=====C语言声明的方法,对理解下面的两个都有帮助==================转载 2012-09-16 14:10:39 · 493 阅读 · 0 评论 -
C/C++ 多线程编程
多线程编程就会涉及到 优先级、互斥信号,同步/异步这样的问题,虽然学过,但用的还是比较少,这些都属于线程间的通信。 地址:http://blog.csdn.net/lzx_bupt/article/details/6910503 这是一个系列的,好好看看!原创 2012-09-25 17:24:58 · 969 阅读 · 0 评论 -
了解回文
今天笔试,遇到一道判断字符串是否是回文的题。什么是回文?回文是正读和反读都一样的字符串,如下列字符串“radar" "eye"都是回文串。一个简单的回文程序如下:在VC6.0用C写的: #includeint hw(char *s);//验证回文数int main(){ char s[10]; printf("请输入字符串\n"); gets(s); if(hw(s))printf("%s属于回文原创 2012-10-16 19:08:15 · 715 阅读 · 0 评论 -
野指针
转自 http://blog.sina.com.cn/s/blog_79e8861e0100s69f.html指针p被free以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p成了“野指针”。如果此时不把p设置为NULL,会让人误以为p是个合法的指针。所以delete p或free(p)之后要加上p = NULL;的完善处理 我理解:指针p被free以后其地址仍然转载 2012-10-20 19:44:43 · 520 阅读 · 0 评论