c/c++
lx627776548
这个作者很懒,什么都没留下…
展开
-
C++判断字符串是否全是数字
bool IsAllNumString(const std::string& str){ for (const auto& s_char : str) { if (s_char < '0' || s_char > '9') { return false; } } return true;}原创 2021-12-08 17:40:35 · 1141 阅读 · 0 评论 -
list和vector有什么区别?
vector和数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随机存取(即使用[]操作符访问其中的元素),但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝(复杂度是O(n)),另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。list是由数据结构中的双向链表实现的,因此它的内存空间转载 2016-09-24 09:13:38 · 4894 阅读 · 0 评论 -
c语言那些细节之a+1和&a+1的区别
首先a是一个数组名,当看到这个a与&a时,一般我们的理解都是这个数组的首地址。没错,如果加上打印的话,确实两个值是一样的。不过&a是整个数组的首地址,a则是数组首元素的地址,虽然值一样,但是意义却不相同。在此之前有必要先看下c程序在内存中的分布图。下面来看一个例子吧还是。示例代码:[html] view转载 2016-09-12 16:42:22 · 2569 阅读 · 0 评论 -
函数指针参数的传递问题
程序1: void myMalloc(char *s) //我想在函数中分配内存,再返回 { s=(char *) malloc(100); } void main() { char *p=NULL; myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么?转载 2016-06-30 10:47:21 · 1803 阅读 · 1 评论 -
c/c++ 友元函数友元类,及const作用
友元的作用 在A里面加friend class B; 使得B类可以访问A类里面的protected和private的成员函数或成员变量 因此,可以在B里面使用a.x来访问A类的私有成员int x; 如果没有这句,这段代码编译不过的。 但注意一点,在A里面声明了这句,只能让B类内部访问A类的保护或私有成员,反之A类不能访问B类保护或私有成员const作用原创 2016-07-13 17:05:36 · 1735 阅读 · 0 评论 -
char* TCHAR* String相互转化
char szVer[256] = {0};memset( szVer,0,sizeof(szVer));CString str;str.Format( L"%s", szVer);TCHAR szVer[64] = {0};CString strVer = szVer;原创 2016-07-14 19:57:25 · 1870 阅读 · 0 评论 -
Detected memory leaks!内存泄漏,溢出,内存越界问题分析
应用程序发生 Detected memory leaks!内存泄漏 一直程序员面对的是一个很痛苦的问题,要查出泄漏的地方有时候需要大半天甚至更长时间。这里讲讲我的一些查找内存泄漏以及避免内存泄漏的一些经验 1.数组相关#define ITEM_COUNT 30WORD m_arrRreset[ITEM_COUNT] = {0};for (int i = 0 i CO原创 2016-07-22 09:48:20 · 7938 阅读 · 0 评论 -
内存管理:栈区,堆区,全局区,文字常量区,程序代码区
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(转载 2016-07-23 18:09:32 · 523 阅读 · 0 评论 -
函数返回值 返回引用
先看看该链接讨论的问题作为热身。http://topic.csdn.net/u/20070616/13/2a6a1739-1a69-4829-a90f-fdb19a61e095.html 函数返回值和返回引用是不同的函数返回值时会产生一个临时变量作为函数返回值的副本,而返回引用时不会产生值的副本,既然是引用,那引用谁呢?这个问题必须清楚,否则将无法理解返回引用到底是个什么概转载 2016-07-27 11:27:10 · 6600 阅读 · 0 评论 -
C++三种创建对象的方法区别
我们都知道C++中有三种创建对象的方法,如下:复制代码代码如下:#include using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int main(){ A a(1); //栈中分配原创 2016-07-29 18:08:40 · 6303 阅读 · 0 评论 -
类类型的大小
1:先看一个空类的大小:[cpp] view plain copy print?#include using namespace std; class A { }; int main(int argc, char** argv) { coutsizeof(A) return 0; }转载 2016-08-31 22:16:40 · 451 阅读 · 0 评论 -
c/c++ bool和BOOL的区别
类型不同:bool是C++定义的布尔类型,BOOL是微软定义的int类型(就是int的别名);取值不同:bool的取值只有0(false)、1(true)两个,而BOOL的取值是int范围;长度不同:bool是单字节(8位二进制)类型,BOOL与int长度相同。,以下是FALSE/TRUE在windef.h的定#ifndef FALSE#define F原创 2016-09-01 09:31:21 · 1756 阅读 · 0 评论 -
c++中临时变量不能作为非const的引用参数
试看下面的代码:#include using namespace std;void f(int &a) { cout }void g(const int &a){ cout } int main() { int a = 3, b = 4; f(a + b); //编译错误,把临时变量作为非const的引用参数传递了转载 2016-09-01 10:57:54 · 878 阅读 · 1 评论 -
指针 数组 数组名和数组名取地址的区别
首先指针数组 和数组指针叫法本身是种误导指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointerto an array,即指向数组的指针其次他们本质一个是数组,一个是指针int* a[4] 表示是一个数组 数组a中的元素都为int型指原创 2016-09-01 15:55:08 · 2829 阅读 · 0 评论 -
拷贝构造函数的参数为什么必须使用引用类型
在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,我有理性这个好品质。思索一下以后,发现这个答案是不对的。让我来撕开(有点暴力,但是我喜欢,嘿嘿--龇牙)那件隐藏在真理外的转载 2016-09-01 22:13:43 · 283 阅读 · 0 评论 -
C++多态,虚函数的使用
父类使用虚函数是为了让子类重写,那子类重写的时候也需要带virtual关键字吗?比如: class A{ virtual bool init(); }; class B : public A{ virtual bool init(); //这里的vitual是必须的吗?好像不用也能编译通过呃….. };c++规定,当一个成员函数被声明为虚函数后,其派生类中的原创 2016-09-02 15:43:11 · 353 阅读 · 0 评论 -
下面程序输出什么?为什么?
下面程序输出什么?为什么? class A { private: static int i; public: A() { i++; } A(const A&) { i++; } static void output() { cout} }; A f(A& a) { A a原创 2016-09-02 18:02:50 · 606 阅读 · 0 评论 -
C++成员变量的初始化顺序问题
问题来源:由于面试题中,考官出了一道简单的程序输出结果值的题:如下,[cpp] view plain copy print?class A { private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(转载 2016-09-03 12:18:34 · 307 阅读 · 0 评论