![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
大漠胡萝卜
这个作者很懒,什么都没留下…
展开
-
malloc相关用法
void DoSomeThing(...){char* p;...p = malloc(1024); // 分配 1K 的空间if (NULL == p)return;...p = realloc(p, 2048); // 空间不够,重新分配到 2Kif (NULL == p) return;...}1、p = malloc(1024);应该写成: p = (ch原创 2013-03-07 14:25:39 · 661 阅读 · 0 评论 -
Const
const int a;//a是常性整数int const a;//a是常性整数const int *a;//a 是一个指向常整型数的指针(整型数是不可修改的,但指针可以)int * const a;// 是一个指向整型数的常指针(指针指向的整型数是可以修改的,但指针是不可修改的)就近原则int const * a const;// a 是一个指向常整型数的常指针(原创 2013-03-10 09:40:48 · 724 阅读 · 0 评论 -
数据声明
a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)d) 一个有 10 个整型数的数组(An array of 10 integers)e) 一个有 10 个指针的数组,该原创 2013-03-10 10:22:24 · 735 阅读 · 0 评论 -
mencpy、snprintf和strcpy对比
这些函数的区别在于 实现功能 以及 操作对象 不同。strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。函数原型:extern char *strcpy(char dest[],const char *src);snprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这原创 2013-03-09 15:28:24 · 1695 阅读 · 0 评论 -
类成员函数的重载、覆盖和隐藏区别
成员函数被重载的特征: (1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有 virtual 关键字。(动态的多态)“隐藏”是指派生类的函数屏原创 2013-03-10 10:51:05 · 651 阅读 · 0 评论 -
链表相关操作一
#include#include#includetypedef struct Node//定义链表结点{ int data;//数据域 struct Node* pNext;//指针域}NODE,*PNODE;//NODE等价于struct Node,PNODE等价于struct Node*;Node主要用于malloc函数PNODE createLinkList(void);转载 2013-03-10 23:39:01 · 751 阅读 · 0 评论 -
各种排序算法的实现及其比较
排序算法是笔试和面试中最喜欢考到的内容,今晚花了好几个小时的时间把之前接触过的排序算法都重新实现了一遍。 常用的内部排序算法主要分为五类:插入、交换、选择、归并、基数排序。文章的最后可能还会稍微分析一下外部排序。。。内/外部排序的区别就是 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,在排序过程中需要多次的内/外存之间的交换。下面一个一个分析。转载 2013-03-13 10:48:43 · 658 阅读 · 0 评论 -
交换两个参数的值
方法一:i=i+j;j=i-j;i=i-j;方法二:i^=j;j^=i;i^=j;方法三:a = a+b-(b=a)对于方法一、三i=i+j 如果 i、j 是两个比较大的数,i+j 可能越界,所以方法二更好一些原创 2013-03-15 10:03:55 · 984 阅读 · 0 评论 -
堆 和 栈的 区别(经典)
堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵转载 2013-03-24 09:32:16 · 667 阅读 · 0 评论 -
linux、Unix
中文版书目《Linux Networking Cookbook中文版》 New!《Shell脚本学习指南》 New!《卓有成效的程序员》 New!《代码之美》 New!《嵌入式硬件设计(第二版)》 New!《LPI Linux认证权威指南(第二版)》 New!《LINUX SERVER HACKS(卷二)》 New!《BSD Hacks》 New!《GNU原创 2013-04-24 23:44:09 · 796 阅读 · 0 评论 -
C/C++中static,const,inline三种关键字详细总结
C/C++中static,const,inline三种关键字详细总结作者: 字体:[增加 减小] 类型:转载以下是对C/C++中static,const,inline的三种关键字进行了详细的分析介绍,需要的朋友可以过来参考下一、关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static转载 2015-02-02 14:47:28 · 754 阅读 · 0 评论 -
Static
在 C 语言中,关键字 static 有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的原创 2013-03-10 09:43:18 · 790 阅读 · 0 评论 -
链表相关操作二(两种遍历方式)
1、头结点不存放Valuevoid reverseLinkList(PNODE head){ NODE *p,*q,*r; p = head->pNext; if(p==NULL || p->pNext==NULL) { return;//说明没有元素或只有一个元素 } q = p->pNext; while(q) { r = q->pNext; p->pNe原创 2013-03-11 07:16:22 · 1049 阅读 · 0 评论 -
有哪几种情况只能用intialization list 而不能用assignment
无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果都是相同的。不同之处在于,使用构造函数初始化列表初始化数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。对于const和reference类型成员变量,它们只能够被初始化而不能做赋值操作,因此只能用初始化列表。还有一种情况就是,类的构造函数需要调用其基类的构造函数的时候。请看下面的代码:1转载 2013-03-09 15:59:44 · 4850 阅读 · 2 评论 -
引用的注意事项
1、引用与指针有什么区别?答 、1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。原创 2013-03-10 11:30:34 · 683 阅读 · 0 评论 -
C++类中的静态成员变量和静态成员函数的作用?
数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以转载 2013-03-09 22:57:55 · 857 阅读 · 0 评论 -
关于运算符重载(总结)
1、运算符重载是为了对用户自定义数据类型的数据的操作与内定义的数据类型的数据的操作形式一致。不能重载的5个运算符:*成员指针访问运算符;::域运算符;sizeof长度运算符;?:条件运算符;.成员访问符。运算重载的三种方式:普通函数,友元函数,类成员函数。当重载为成员函数时,双目运算符仅有一个参数。对单目运算符,重载为成员函数时,不能再显式说明参数。重载为成员函数时,总时隐含了一个转载 2013-03-10 08:47:42 · 884 阅读 · 0 评论 -
类模板派生
1) 普通类派生类模板2) 类模板也可以派生类模板,这时,派生类模板的参数表中应包含基类模板的参数。 3) 模板类与普通类一样也具有多继承,即模板类之间允许有多继承。可以从类模板派生出新的类,既可以派生类模板,也可以派生非模板类。派生方法:⑴ 从类模板派生类模板可以从类模板派生出新的类模板,它的派生格式如下例所示:template class base{};tem转载 2013-03-10 09:14:08 · 1514 阅读 · 0 评论 -
C++运算符优先级
优先级操作符描述例子结合性1()[]->.::++--调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;原创 2013-03-10 10:12:00 · 509 阅读 · 0 评论 -
String原型
class String{public: String(const char *str = NULL); // 普通构造 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & operate =(const String &other); // 赋值函数private: char *m_da原创 2013-03-10 10:40:17 · 2301 阅读 · 0 评论 -
经典C++笔试题
1、判断void main(){ char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc"; const char* str6 = "a原创 2013-03-09 08:02:57 · 843 阅读 · 0 评论 -
面向对象的三个基本特征,并简单叙述之?
1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行 protection(private,protected,public) 2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及原创 2013-03-10 10:58:46 · 6874 阅读 · 0 评论 -
字符串处理
1、写出在母串中查找子串出现次数的代码.int count1(char* str,char* s){char* s1;char* s2;int count = 0;while(*str!='\0'){s1 = str;s2 = s;while(*s2 == *s1&&(*s2!='\0')&&(*s1!='\0')){s2++;s1++;}if(*s2 == '原创 2013-03-07 08:26:11 · 690 阅读 · 0 评论 -
C++中的Lambda表达式详解
这篇文章主要介绍了C++中的Lambda表达式详解,本文讲解了基本语法、Lambda的使用等内容,需要的朋友可以参考下我是搞C++的一直都在提醒自己,我是搞C++的;但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C++代码了。今天看到了C++中的Lambda表达式,虽然用过C#的,但是C++的,一直原创 2015-03-13 14:10:55 · 834 阅读 · 0 评论