C/C++
Victor _Lv
个人微信公众号:维特小站(VictorSite)
展开
-
大小端表示法
这篇博客写的不错:详解大端模式和小端模式最近笔试上也碰到了这方面的问题。需要注意两点:(1)一般操作系统都是小端,而通讯协议是大端的。(2)写一段程序判断大小端:bool isBig_Endian(){ short test = 0x1234; if( *((char *)&test) == 0x12) return true; else return原创 2016-09-26 23:17:48 · 1358 阅读 · 0 评论 -
C++操作符优先级
摘自《C++ primer》第三版中文版:原创 2016-09-13 12:05:26 · 498 阅读 · 0 评论 -
C++ sizeof 64位和32位下的对比
C++中sizeof的作用是求字节数。原创 2016-09-13 10:34:32 · 3487 阅读 · 0 评论 -
vector与普通数组的初始化
vector容器定义时如果程序中没有显式初始化,则容器会自动对所有元素进行初始化,例如vector数组所有元素会被自动初始化为0.然而如果是用传统的方法定义数组:int array[size],若程序员不显式初始化则数组的初值会是奇怪的值。示例代码如下:#include <iostream>#include <vector>using namespace std;int main(){原创 2016-09-13 10:22:14 · 2013 阅读 · 0 评论 -
C++里的抽象类和纯虚函数
C++里的抽象类和纯虚函数在C++中,含有至少一个纯虚函数的类是抽象类,但是注意在C++中没有abstract这个关键字,所以C++里面的抽象类无需添加abstract这个单词。抽象类不可以直接实例化,也就是不能直接用抽象类来定义对象,只有实现了父类所有纯虚方法并且不包含纯虚函数的子类才能实例化。 来看一个示例: #include <iostream> using namespace std;原创 2016-09-12 09:57:45 · 1413 阅读 · 0 评论 -
C++学习书单
C++各阶段(低阶、中阶、高阶)学习教材(stackflow上经典的回答):http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list转载 2016-08-30 23:37:47 · 421 阅读 · 0 评论 -
C++虚析构函数
C++的虚析构函数: 用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。 这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用,如果析构函数不是虚拟的,则将只调用对应于指针类型的析构函数。当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个原创 2016-08-30 23:32:35 · 608 阅读 · 0 评论 -
C++虚函数与多态解析
C++虚函数与多态实例解析 都说virtual关键字是用来实现多态和动态绑定,但是咋一听感觉挺抽象的,下面结合个实例来看看。 父类: #include <iostream>using namespace std;class Dad{public: Dad(){} void sayName() { cout<<"I am Dad."<<endl;原创 2016-08-30 23:30:54 · 515 阅读 · 0 评论 -
C++和java对比
Java和C/C++区别对比:首先java的语法是继承自C和C++的,但是java摒弃或者优化了很多C、C++上面对程序员造成困扰的地方,也就是说java设计者的初衷是想让程序员编程更轻松,更快捷高效,更少出错,当然,某种程度上这需要牺牲程序的效率。(1)比如C、C++上面的指针,在java编程里面不复存在了,在java里面,指针已经被封装在底层虚拟机了,而java程序员因为不能够使用原创 2016-08-18 21:25:37 · 1161 阅读 · 0 评论 -
conversion from 'LinkedList<myInt>*' to non-scalar type 'LinkedList<myInt>' requested
C++代码编译报错信息:conversion from 'LinkedList*' to non-scalar type 'LinkedList' requested有可能是因为C++ new对象的写法跟java不一样:(1)LinkedList *test = new LinkedList();C++中只是声明对象而未new时,写法跟java一样:(2)L原创 2016-08-18 21:23:51 · 1417 阅读 · 0 评论 -
C++定义类和对象的两种方式--对比Java
C++定义类和对象的两种方式–对比Java搞了一段时间java再回来搞C++,在有些地方会偶尔不太适应,例如,这里要说的对象的声明,Java和C++就有很大的不同。 比如说这里有一个类: //C++方式定义一个classclass Son :public Dad {private: const int count;public: Son() { c原创 2016-09-01 23:00:56 · 3698 阅读 · 1 评论 -
C++二维数组
我们知道,C++建立静态数组很简单:int array[row][col]但是要用动态方式或者需要用int **调用数组时,就必须知道该怎么用了:二维数组可以看成是数组的数组或者包含数组的数组,所以我们可以先使用双重指针建立一个存放指针(将被用来作数组名)的数组(指针),然后再把这个数组的每一项元素定义为一个数组。说得有点绕,看代码:示例代码:#include using na原创 2016-09-14 00:23:50 · 701 阅读 · 0 评论 -
[Warning] deprecated conversion from string constant to 'char*' 原因
C++代码:char *ss = "2cc5";会提示说[Warning] deprecated conversion from string constant to 'char*' 。来看看stackoverflow里面的一个回答:“Why? Well, C and C++ differ in the type of the string literal. In C the ty原创 2016-09-17 23:40:43 · 1838 阅读 · 0 评论 -
int *p[] 与 int (*p)[]
int *p[4]; //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。int (*p)[4]; //定义一个数组指针,该指针指向含4个元素的一维数组(数组中每个元素是int型)。 区分int *p[n]; 和int (*p)[n]; 就要看运算符的优先级了。int *p[n]; 中,运算符[ ]优先级高,先与p结合成为原创 2017-05-13 13:52:32 · 770 阅读 · 0 评论 -
C++虚函数表解析
C++ 虚函数表解析转载 2016-10-07 20:44:34 · 513 阅读 · 0 评论 -
&a + 1和 &(a+1)
问题来源:int a[5] = {1,2,3,4,5};int *b = (int *)(&a+1);cout最后输出是:125这里有个梗就是两种+1究竟背后是加了多少,这个关键是得知道是谁在+1:(1)a+1,a是一个指向一个int值的指针+1,所以+1背后实际是+ 1 * sizeof(int *),也就是 + 4bytes,也就是加了一个int的空原创 2016-10-02 21:59:31 · 2760 阅读 · 1 评论 -
输入一行字符反向输出
/*题目描述:输入一行字符(可包含空格)将其反向输出示例:输入:hello world输出:dlrow olleh*/#include #include // support for stack template classusing namespace std;//方法一:栈方法void print_Inverse_Using_Stack(char *s){原创 2016-09-24 00:06:13 · 2677 阅读 · 0 评论 -
C++读取一行字符串输入
这个知识点必须掌握,因为是笔试必备技能!不然连输入都搞不定,何谈后面的?#include #include using namespace std;int main(){ //对于char* / char[] char s[1001]; cout<<"Please input char[]:"<<endl; cin.getline(s, 1000);//iostream下的函原创 2016-09-23 21:34:40 · 9294 阅读 · 0 评论 -
2016-9-22题目:extern char* 与char[]
假如file1.cpp定义了一个char[]全局数组:char c[] = {'a','b','c'};然后在同工程的另一个文件file2.cpp这般extern:#include #include using namespace std;//extern char c[]; //正确extern extern char *c; //错误,char[]和char*是两种东原创 2016-09-23 10:11:10 · 951 阅读 · 0 评论 -
虚函数与多态
C++虚函数与多态实例 都说virtual关键字是用来实现多态和动态绑定,但是咋一听感觉挺抽象的,下面结合个实例来看看。 父类: #include <iostream>using namespace std;class Dad{public: Dad(){} void sayName() { cout<<"I am Dad."<<endl;原创 2016-09-06 22:52:33 · 415 阅读 · 0 评论 -
野指针
C++指针(1)野指针:delete操作只是把内存释放以及把该指针与相应的内存(堆)空间解除绑定,但是该指针值未被清空删除,它会变成野指针。野指针在C++里面是一个略恐怖的东西。 “造成野指针的原因: 1、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的默认值是随机的,它会乱指一气。 2、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指原创 2016-09-06 22:20:05 · 453 阅读 · 0 评论 -
判断回文串
判断回文串C++实现回文串:level、abba 非回文串:hevel、aabb 方法解析: 1. 首先得知道字符数组的长度(要么使用现成的计算字符数组长度的函数,要么自己写一个遍历区数,都得花费O(n)时间,暂时没有能够节省这部分时间的方法) 2. 然后就从中间的字符开始,往两边走,两边各取一个元素比较,若不相等则跳出,得到答案是这个是非回文串,若相等则继续往两边走,以此类推。 3. 可原创 2016-09-06 22:17:26 · 1042 阅读 · 0 评论 -
判断字符串相等
笔试题:下面这段代码输出是什么:#include using namespace std;int main(){ char *str1 = "abc"; char *str2 = "abc"; char str3[] = "abc"; char str4[] = "abc"; string str5 = "abc"; string str6 = "abc"; cou原创 2016-09-18 22:10:34 · 1901 阅读 · 0 评论 -
泛型小解析
先来看看《Java编程思想》一书里面对于泛型的初衷和作用的解析:作用1(针对C++):当我们编写了一个很强大的函数,希望拿去使用(通过参数传递进来)时,发现这个函数只能传递一个特定类型的参数比如int类型的,那么对于其他类型的数据就无法使用这个“强大”的函数了,是不是很苦逼,举个例子,int max(int a, int b)函数,我们姑且当它是一个很“强大”的函数,是用来计算原创 2016-08-07 23:13:05 · 471 阅读 · 0 评论 -
C++的三种继承方式简述
C++对父类(也称基类)的继承有三种方式,分别为:public继承、protected继承、private继承。三种继承方式的不同在于继承之后子类的成员函数的“可继承性质”。在说三种继承方式导致的子类成员函数可继承性质改变之前,先说一下在定义类的成员(包括函数和属性)的时候,在其前面添加public 或 protected 或 private对成员的可继承性的影响。其中,public类型的成员原创 2015-09-14 11:33:05 · 1656 阅读 · 0 评论 -
内联函数inline
C++内联函数可以看做是C里面的define宏定义的升级版,目的是为了降低程序运行的时间,我们知道C里面的宏定义是进行简单的文本替换。内敛函数不是纯粹的文本替换,需要知道的是,我们的C++程序进行函数调用时,是需要先跳出当前执行的程序,去到函数所在的地址去执行函数代码,执行完再跳回刚才的位置继续往下执行程序,这里就有一个来回跳转的过程,是相当费时间的,所以如果直接把函数体直接给它扔到程序该函数的位原创 2016-06-04 16:03:10 · 720 阅读 · 0 评论 -
获取string的长度
获取C++字符串string(头文件)的方法1:size()函数string str = "Hello";int len = str.size();2:length()函数string str = "Hello";int len = str.length();原创 2016-03-14 21:27:01 · 2360 阅读 · 0 评论 -
sizeof与strlen
这篇博客写得挺完善的,不过是不是没有错误还需要自己亲手写代码运行下看看结果。点击打开链接原创 2016-04-05 10:16:14 · 531 阅读 · 0 评论 -
i++与++i
#include int main(){ int a,b,c,d; a = 10; b = a++;//相当于两个句子:b = a,a += 1;先使用a的值再加1 c = ++a;//相当于两句:a += 1,c = a;先再加1使用a的值 d = 10*a++; printf("a, b, c, d: %d,%d,%d,%d",a,b,c,d); //最后输出为a=13,b原创 2016-03-31 11:18:31 · 545 阅读 · 0 评论 -
C++除法取整
使用floor函数。floor(x)返回的是小于或等于x的最大整数。如: floor(2.5) = 2 floor(-2.5) = -3使用ceil函数。ceil(x)返回的是大于x的最小整数。如: ceil(2.5) = 3 ceil(-2.5) = -2 floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()转载 2016-02-24 17:19:18 · 14571 阅读 · 0 评论 -
C语言获得数组长度的函数
1、c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)。例如:int data[4];int length;length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小printf("length of data[4]=%d", length ); //输出length of data[4]=转载 2016-03-08 17:50:47 · 37843 阅读 · 3 评论 -
使用Eclipse时一些报错
第一个问题:明明所有文件都没有叉也就是没有报错,但是工程目录那却有一个叉答案:很可能的解决办法就是,clean project一下,refresh一下,然后重新build就应该解决了第二个问题:明明哪都没有叉没有报错,但是run的时候却弹出窗口说有error答案:很可能的解决办法就是,重启一下eclipse,然后clean Project,重新build和run一下应该ok了原创 2016-03-16 20:15:59 · 789 阅读 · 0 评论 -
CString与string
“CString 是MFC或者ATL中的实现,string是C++标准库中的实现string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中; CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要转载 2015-12-08 12:17:47 · 874 阅读 · 0 评论 -
C++ string占多少个字节测试
代码:#include #include using namespace std;int main(){ string a("hha"); string b("hha好"); cout<<a.size()<<endl<<b.size()<<endl; cout<<a.length()<<endl<<b.length()<<endl; //可以发现string::size()原创 2015-12-08 12:11:39 · 2999 阅读 · 0 评论 -
C/C++对一个整数求出每一位的数值
题目描述 Write a program that reads an integer with 3 digits and adds all the digits in the integer.For example,if an integer is 932,the sum of all its digits is 9+3+2=14.输入格式 An integer x.(10原创 2015-11-28 22:44:45 · 7450 阅读 · 0 评论 -
C/C++ Find the missing number
题目描述There are five numbers 1,2,3,4 and 5,now you can see four of them,do you know what is the remaining one?输入格式 Four different integers in range 1 to 5.输出格式 One line,the missing原创 2015-11-28 23:32:05 · 1013 阅读 · 0 评论 -
C/C++文件I/O操作
文件输入#include #include //支持文件I/O操作#include //支持exit()函数using namespace std;int main(){ ifstream inFile; //实例化 //char filename[16]; //cout<<"Enter filename: "<<endl; //cin.getline(filename原创 2016-03-15 10:32:23 · 920 阅读 · 0 评论 -
哈希hash
先收藏着,慢慢研究这篇博客:从头到尾解析Hash表算法转载 2016-04-11 20:30:42 · 554 阅读 · 0 评论 -
动态联编【转】
这个东西是C++语言里面的基础性问题,自己在面试中就被问到了。转载地址:点击打开链接转载 2016-04-11 20:36:17 · 572 阅读 · 0 评论 -
C++文件操作
这里说C++风格的文件操作,也就是库里面的使用(ifstream/ostream)。(1)删除某一特定行思想:首先你需要有方法找到你要删除的那一行是哪一行,然后逐一遍历文件的每一行,并用一个临时string变量(网上有另一个方法是新开一个暂存文件)存储,判断如果是要是删除的那一行,就不要把该行存到string临时变量中,也就是跳过该行,继续遍历到文件尾不能get到内容为止。此时,已经把文件原创 2016-04-24 11:51:16 · 806 阅读 · 0 评论