面试题
_来信
学习,总结,归纳,练习!
展开
-
面试题:在字符串中找出连续最长的数字串
题目要求: 在字符串中找出连续最长的数字串,并把这个串的长度返回;函数原型: unsigned int Continumax(char** pOutputstr, char* intputstr);后者是输入字符串,前者是输出的连续最长的数字串。 如果连续最长的数字串的长度为0,应该返回空字符串,而非NULL。 思路:遍历字符串,遇到数字后就开始循环,直到遇到的不是数字后才跳出循...原创 2018-07-25 18:40:05 · 4088 阅读 · 0 评论 -
简单介绍C++强制类型转换
在介绍C++强制类型转换之前,我们先来看一看C语言风格的强制类型转换,的确,C风格的强制类型转换用起来很方便。 它的格式是: (类型)变量void test_c_cast(){ //隐式类型转换(相近类型) int i = 1; double d = i; //强转 int* p = &i; int address = (in...原创 2018-08-20 10:31:02 · 300 阅读 · 0 评论 -
探索类型萃取的必要性
首先我们来实现一个能装string的容器,只实现了尾插和打印接口。template <class T>class SeqList{public: SeqList() :_a(NULL), _size(0), _capacity(0) {} void PushBack(const T& x) { if (_...原创 2018-08-16 16:04:04 · 302 阅读 · 0 评论 -
C++对象模型图示总结
本文的图片全部是由我自己所画,如有错误,感谢大家指出。菱形继承和菱形虚拟继承 有虚函数的类对象 有虚函数的单继承 有虚函数的多继承 有虚函数的菱形继承 有虚函数的菱形虚拟继承 ...原创 2018-08-16 09:31:43 · 627 阅读 · 0 评论 -
模拟实现C++的new/delete
本文只讨论关于自定义类型的new/delete。模拟实现new:template<class T>T* New(size_t n){ //先开辟一段空间,要多开4字节,用来存放开了多少个对象 T* ptr = (T*)operator new(sizeof(T)*n+4); *((int*)ptr) = n; //ptr向后移4字节,开始给...原创 2018-08-13 15:19:24 · 304 阅读 · 1 评论 -
C++中const关键字
一:const修饰指针变量int num = 0;1.const在 * 前面,表示const修饰指针指向的内容const int* p = #int const* p = #2.const在 * 后面,表示const修饰指针变量int* const p = #二:const修饰成员函数 首先来看一下普通成员函数:cla...原创 2018-08-13 11:20:53 · 177 阅读 · 0 评论 -
C++:为什么在继承关系中,父类的析构函数最好定义为虚函数?
我们先来看一段简单代码,A类有一个指针成员_pa,B类公有继承了A类,然后自己有一个指针成员_pb:class A{public: A(int x = 1) :_pa(new int(x)) {} ~A() { cout << "~A()" << endl; }protected: i...原创 2018-08-15 15:14:33 · 6238 阅读 · 4 评论 -
C++:重载,重定义,重写的区别
这是比较容易混淆的概念,在此整理,以便理解。一:重载 重载指的是在同一个作用域内,两函数的函数名可以相同,但是参数不能完全相同,可以是参数类型不同或者是参数个数不同,至于返回值,不影响重载。如图,构成了重载: 如何实现重载? C++代码在编译时会根据参数列表对函数进行重命名,例如void Test(int a, int b)会被重命名为_Test_int_int,void Tes...原创 2018-08-15 14:44:31 · 20682 阅读 · 8 评论 -
C语言static关键字的作用
一:当static修饰函数或者代码块之外的变量时 改变的是函数或全局变量的链接属性,外部链接属性变为内部链接属性,而存储类型和作用域不受影响。 换句话说,被static修饰的函数或全局变量,只能在当前源文件中访问。二:当static修饰代码块内部的局部变量时 在函数中定义局部变量,如果没有被声明为其他类型的变量都是自动变量,自动变量属于动态存储类型,函数调用结束后即被释放。 但有时候需...原创 2018-08-11 08:38:05 · 423 阅读 · 0 评论 -
宏和函数有什么区别?
define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏。 宏分为普通宏定义和函数宏定义: 普通宏定义:#define MAX 1024 函数宏定义:#define MIN(a, b) ((a) < (b) ? (a) : (b))宏函数可以完成一些简单的运算,那么宏为什么不能取代函数呢?它们有什么区别?从代码长度来看: 宏每次使用都插入到程序中对应的位置...原创 2018-08-10 11:27:23 · 298 阅读 · 0 评论 -
一个C语言程序的编译过程
这是一个再简单不过的C语言程序:#include &lt;stdio.h&gt;int main(){ printf("hello world!\n"); return 0;}执行gcc test.c,就使一个源文件变成了可执行文件,这个步骤我们很熟悉,但是从一个源文件(.c文件)到可执行程序到底经历了哪几步,每一步具体做了什么,这是我想要总结一下的:一:...原创 2018-08-10 11:01:48 · 2411 阅读 · 0 评论 -
模拟实现atoi函数
int atoi(const char* ptr) ; 1.跳过前面的空白字符(例如空格,tab缩进)等,可以通过isspace( )函数来检测; 2.遇上数字或正负符号才开始转换,而在遇到非数字或’\0’才结束转换,并将结果返回。 3.如果 ptr不能转换成 int 或者 ptr为空字符串,那么将返回 0。 4.该函数要求被转换的字符串是按十进制数理解的。ok,知道这些了,实现它就不...原创 2018-08-20 15:46:57 · 294 阅读 · 0 评论