MT
microlyc
这个作者很懒,什么都没留下…
展开
-
内联函数和宏定义的区别
使用宏和内联函数都可以节省在函数调用方面所带来的时间开销。二者都采用了空间换时间的方式,在其调用处进行展开:(1) 在预编译时期,宏定义在调用处执行字符串的原样替换。在编译时期,内联函数在调用处展开,同时进行参数类型检查(而 宏 不检查)。(2) 内联函数首先是函数,可以像调用普通函数一样调用内联函数。而宏定义往往需要添加很多括号防止歧义,编写更加复杂。(3转载 2017-10-24 15:00:31 · 187 阅读 · 0 评论 -
C++面试常见题目问与答(汇总一)
http://blog.csdn.net/charles_r_chiu/article/details/478588851、什么是虚函数?什么是纯虚函数?答:虚函数声明如下: virtual ReturnType FunctionName(Parameter);引入虚函数是为了动态绑定。 纯虚函数声明如下:virtual ReturnType FunctionName()= 0转载 2017-10-25 11:13:36 · 368 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。void *memcpy( void *dest, const void *s翻译 2017-09-27 07:57:50 · 213 阅读 · 0 评论 -
内存泄漏,动态内存无作用域问题,如何避免内存泄漏
无论是C还是C++程序,运行时候的变量主要有三种分配方式:堆分配、栈分配、全局和静态内存分配。内存泄漏主要是发生在堆内存分配方式中,即“配置了内存后,所有指向该内存的指针都遗失了”,若缺乏语言这样的垃圾回收机制,这样的内存片就无法归还系统。因为内存泄漏属于程序运行中的问题,无法通过编译识别,所以只能在程序运行过程中来判别和诊断。 百度百科:内存泄漏(Memory转载 2017-10-24 11:26:53 · 774 阅读 · 0 评论 -
重写、覆盖、重载、隐藏、多态几个概念的区别分析
override->重写(=覆盖)、overload->重载、polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。成员函数的重载(overload)、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。 1 重载与覆盖转载 2017-10-11 09:24:14 · 176 阅读 · 0 评论 -
C++中define与const的区别
区别如下:用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换;用const float MAX = 255; 定义的常量有类型名字,存放在内存的静态区域中,在程序运行过程中const变量只有一个拷贝,转载 2017-10-25 08:59:51 · 203 阅读 · 0 评论 -
头文件中ifndef/define/endif的作用
例如:要编写头文件test.h #ifndef _TEST_H #define _TEST_H//一般是文件名的大写 ············ #endif 1.比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成转载 2017-10-25 08:50:12 · 846 阅读 · 0 评论 -
extern C作用总结
http://blog.csdn.net/wangjiaoyu250/article/details/42809047功能概述 主要用与在C++代码中调用的C函数的声明,或C++中编译的函数要在C中调用,也即是导入C形式的函数库或者提供C类型的库给C调用,。可以在C++中使用C的已编译好的函数模块,在c++中么用到c语言写的函数,声明一下,在DLL中经常看到,避免C++ n转载 2017-10-09 11:08:21 · 200 阅读 · 0 评论 -
两数交换三种方法:指针,加减法与位运算
http://www.nowamagic.net/academy/detail/40110208void swap(int *x, int *y){ int t; t=*x; *x=*y; *y=t;}如果再加个限制,不使用额外的变量,可以这样:void swap(int *x,int *y){ *x = *x + *y;转载 2017-10-24 19:30:06 · 338 阅读 · 0 评论 -
C语言volatile关键字
volatile 是易变的、不稳定的意思。很多人根本就没见过这个关键字,不知道它的存在。也有很多程序员知道它的存在,但从来没用过它。我对它有种“杨家有女初长成,养在深闺人未识” 的感觉。volatile 关键字和const 一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进转载 2017-10-09 11:54:48 · 5565 阅读 · 0 评论 -
new与malloc
再谈二者区别:1、new自动计算需要分配的空间,而malloc需要手工计算字节数2、new是类型安全的,而malloc不是,比如:int* p = new float[2]; // 编译时指出错误int* p = malloc(2*sizeof(float)); // 编译时无法指出错误new operator 由两步构成,分别是 operator new 和 c原创 2017-09-27 09:54:46 · 293 阅读 · 0 评论 -
函数返回局部变量的几种情况
转载 http://blog.csdn.net/haiwil/article/details/6691854/本文主要详细讨论了返回返回局部变量的几种情况,值得大家注意。 准确的来说,函数不能通过返回指向栈内存的指针(注意这里指的是栈,返回指向堆内存的指针是可以的)。 下面以函数返回局部变量的指针举几个典型的例子来说明:1:转载 2017-10-25 12:15:52 · 321 阅读 · 0 评论