随笔分类 -  C/C++笔记

1 2 3 4 下一页

C++中关于指针运算符->的重载问题
摘要:#includeusing namespace std;struct date{int year;int month;int day;};struct Person{string name;int age;bool gender;double salary;date birth;Person(){c... 阅读全文

posted @ 2014-06-15 10:15 原来... 阅读(1347) 评论(0) 推荐(0) 编辑

二分搜索及其扩展(循环递增数组的搜索)
摘要:转自:http://blog.csdn.net/hackbuteer1/article/details/7581596二分搜索及其扩展(循环递增数组的搜索)分类:面试珠玑2012-05-18 21:401076人阅读评论(6)收藏举报二分搜索需要注意开闭区间的问题,限制条件和边界要保持配对:low<=high , low = mid +1 ,high = mid-1。二分搜索的模板如下:[cpp]view plaincopy//二分搜索intBinarySearch(int*num,intkey,intlow,inthigh){intmid;while(low<=high)//切记 阅读全文

posted @ 2012-09-24 08:49 原来... 阅读(811) 评论(0) 推荐(0) 编辑

再再论指针
摘要:如下内容及该文章链接内容均来自:http://blog.csdn.net/megaboy/article/details/482783再再论指针----篇首语分类:再再论指针2005-09-17 16:195834人阅读评论(5)收藏举报 指针是C语言规范里面一项核心内容,指针具有与生俱来的优势,利用指针可以写出许多短小精悍、效率极高的代码,它是C语言一把无可替代的利器,凭着这把利器,C语言与其它高级语言相比至少在效率方面高人一筹。但是,由于指针的原理与使用方式跟人们通常的思维习惯有较大的差别,造成了指针比C语言其它概念难理解得多,这使得对指针认识不足成为了一种在C程序员中普遍存在的现象,这种 阅读全文

posted @ 2012-09-21 16:24 原来... 阅读(710) 评论(0) 推荐(0) 编辑

设有n个正整数,将它们联接成一排,组成一个最小的多位整数
摘要:设有n个正整数,将它们联接成一排,组成一个最小的多位整数。程序输入:n个数程序输出:联接成的多位数例如:n=2时,2个整数32,321连接成的最小整数为:32132,n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355[题目要求]1. 给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算法。2. 给出算法的时间空间复杂度。3. 证明你的算法。(非常重要)写个简单的情况算法:对于 输入的数位数 小于等于3位算法#include<iostream>#include<string.h>#include<string> 阅读全文

posted @ 2012-09-11 12:53 原来... 阅读(3524) 评论(0) 推荐(0) 编辑

指针和引用的区别
摘要:指针和引用的区别。From :http://blog.csdn.net/listening_music/article/details/6921608下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:2、指针和引用的区别首先,引用不可以为空,但指针可以为空。前面也说过了引用是对象的别名,引用为空——对象都不存在,怎么 阅读全文

posted @ 2012-07-01 17:04 原来... 阅读(1717) 评论(0) 推荐(0) 编辑

C++常对象精讲 — const关键字
摘要:const关键字:用const修饰的定义对象称为常对象;用const修饰的声明成员函数称为常成员函数;用const修饰的声明数据成员称为常数据成员。变量或对象被 const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。常对象说明:常对象是指对象的数据成员的值在对象被调用时不能被改变。常对象必须进行初始化,且不能被更新。不能通过常对象调用普通成员函数,但是可以通过普通对象调用常成员函数。常对象只能调用常成员函数。常对象的声明如下:const <类名> <对象名><类名> const <对象名>两种声明完全一样没有任何区别。 阅读全文

posted @ 2012-03-07 12:52 原来... 阅读(1124) 评论(0) 推荐(0) 编辑

O(n)时间的排序
摘要:题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。分析:排序是面试时经常被提及的一类题目,我们也熟悉其中很多种算法,诸如插入排序、归并排序、冒泡排序,快速排序等等。这些排序的算法,要么是O(n2)的,要么是O(nlogn)的。可是这道题竟然要求是O(n)的,这里面到底有什么玄机呢? 题目特别强调是对一个公司的员工的年龄作排序。员工的数目虽然有几万人,但这几万员工的年龄却只有几十种可能。上班早的人一般也要等到将近二十岁才上班,一般人再晚到了六七十岁也不得不退休。 由于年龄总共只有几十种可能,我们可以很方便地统计出每一个年龄里有多少名 阅读全文

posted @ 2011-09-19 14:56 原来... 阅读(552) 评论(0) 推荐(0) 编辑

拷贝构造函数的参数为什么必须使用引用类型
摘要:转自:http://blog.csdn.net/tunsanty/article/details/4264738在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,我有理性这个好品质。思索一下以后,发现这个答案是不对的。让我来撕开(有点暴力,但是我喜欢,嘿嘿--龇牙)那件隐藏在真理外的小裤衩,让它袒露在“登徒子”们的眼前吧。先从一个小例子开始:(自己测试一下自己看看这个程 阅读全文

posted @ 2011-09-18 19:02 原来... 阅读(17747) 评论(1) 推荐(8) 编辑

memcpy和memmove的区别??
摘要:#include<iostream>using namespace std;int main(){int a[10];for(int i=0;i<10;i++)a[i]=i;memcpy(&a[4],a,sizeof(int)*6);for(i=0;i<10;i++)cout<<a[i]<<endl;}很简单的小程序!不过已经足以达到我的目的了:)将上面代码gcc之后再运行,结果为:0 1 2 3 0 1 2 3 0 1 。再把第13行改成:memmove(&a[4], a, sizeof(int)*6),重新gcc再运行,结果为 阅读全文

posted @ 2011-09-17 21:12 原来... 阅读(828) 评论(0) 推荐(0) 编辑

给文件或者文件夹改名
摘要:比如把 E:\正则.txt 改成 E:\正则.c#include <stdio.h> int main(void) { char oldname[80], newname[80]; /* prompt for file to rename and new name */ printf("File to rename: "); gets(oldname); printf("New name: "); gets(newname); /* Rename the file */ if (rename(oldname, newname) == 0) . 阅读全文

posted @ 2011-09-17 19:54 原来... 阅读(361) 评论(0) 推荐(0) 编辑

大小字节序
摘要:大字节序:把高有效位放在低地址段,例如在按字节寻址的存储器中往地址 0x0001 存放值 0x12345678,在存储器中为 地址 数值 0x0004 0x78 0x0003 0x56 0x0002 0x34 0x0001 0x12小字节序:把低有效位放在低地址段,例如在按字节寻址的存储器中往地址 0x0001 存放值 0x12345678,在存储器中为 地址 数值 0x0004 0x12 0x0003 0x34 0x0002 0x56 0x0001 0x78现在主流的CPU,intel系列的是采用的little endian的格式存放数据的。 阅读全文

posted @ 2011-09-15 15:24 原来... 阅读(2071) 评论(0) 推荐(0) 编辑

C语言为什么不做数组下标越界检查
摘要:1、为了提高运行效率,不检查数组下表越界,程序就可以跑得快。因为C语言并不是一个快速开发语言,它要求开发人员保证所有逻辑的正确性。所以至少到目前为止,C语言是所有高级语言中速度最快,效率最高的。几乎所有对性能有苛刻要求的场合都使用C语言。 2、不检查下标是为了给程序员更大的空间,也为指针操作带来更多的方便。如果有这个检查的话指针的功能将会大大被削弱,C的数组标识符,里面并没有包含该数组长度的信息,只包含地址信息,所以语言本身无法检查,只能通过编译器检查,而早期的C语言编译器也不对数组越界进行检查,只能由程序员自己检查确保。以及在早期的CRT函数中也不对字符串指针或数组进行越界检查,都是要求程序 阅读全文

posted @ 2011-09-15 12:44 原来... 阅读(6127) 评论(0) 推荐(0) 编辑

C++ cout 输出 16, 8 , 2进制
摘要:C++ cout 输出 16, 8 , 2进制#include <iostream>#include <iomanip>#include <bitset>using std::bitset;using std::hex;using std::oct;using std::cout;using std::cin;using std::endl;int main(){int a=10;cout<<"Dec:"<<a<<endl;cout<<hex<<"Hex:"& 阅读全文

posted @ 2011-09-08 09:44 原来... 阅读(5087) 评论(0) 推荐(0) 编辑

C++空类默认函数
摘要:定义一个空的C++类,例如class Empty{}一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,一般编译过去就相当于class Empty{public:Empty(); // 缺省构造函数Empty( const Empty& ); // 拷贝构造函数~Empty(); // 析构函数Empty& operator=( const Empty& ); // 赋值运算符Empty* operator&(); // 取址运算符const Empty* operator&() const; 阅读全文

posted @ 2011-09-06 10:37 原来... 阅读(1740) 评论(0) 推荐(0) 编辑

彻底搞定C指针-函数名与函数指针
摘要:(本文转自网络:对文中的观点,本人有怀疑,但具体的原因暂时还说不上来,文中的观点也不能说服我。但没办法了,先留着,以后再逐步提高吧!不过,有人这样说:函数名就是函数名,只是在编译过程中,当函数名被使用时总是由编译器把它转换为函数指针,使用&只是显示的说明了编译器将隐式执行的任务 ,有一定道理,只是我目前的知识还不能够确认是否正确,期待....................................)函数名与函数指针一 通常的函数调用一个通常的函数调用的例子://自行包含头文件void MyFun(int x);//此处的申明也可写成:void MyFun( int );int 阅读全文

posted @ 2011-09-03 19:48 原来... 阅读(5145) 评论(0) 推荐(1) 编辑

C++ 实现动态定义三维内的数组
摘要://动态定义一维数组、二维数组、三维数组#include<iostream>#include<ctime>using namespace std ;int main(){int hight , row , col ;register int i , j , k ;srand((unsigned)time(NULL)) ;cout<<"输入一维数组的行"<<endl;cin>>row ;//动态定义一维数组int *p1 ; p1 = new int [row] ;//输入一维数组的值for( i = 0 ; i & 阅读全文

posted @ 2011-09-01 22:40 原来... 阅读(12773) 评论(0) 推荐(0) 编辑

为什么operator<<运算符重载一定要为友元函数呢?
摘要:如果是重载双目操作符(即为类的成员函数),就只要设置一个参数作为右侧运算量,而左侧运算量就是对象本身。。。。。。而 >>或<< 左侧运算量是 cin或cout 而不是对象本身,所以不满足后面一点。。。。。。。。就只能申明为友元函数了。。。如果一定要声明为成员函数,只能成为如下的形式:ostream & operator<<(ostream &output){ return output;}所以在运用这个<<运算符时就变为这种形式了:data<<cout;不合符人的习惯。 阅读全文

posted @ 2011-09-01 09:33 原来... 阅读(9403) 评论(0) 推荐(0) 编辑

深入理解按位异或运算符
摘要:深入理解按位异或运算符参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即: 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0按位异或的3个特点:(1) 0^0=0,0^1=1 0异或任何数=任何数(2) 1^0=1,1^1=0 1异或任何数-任何数取反(3) 任何数异或自己=把自己置0按位异或的几个常见用途:(1) 使某些特定的位翻转 例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。 10100001^00000110 = 10100111(2) 实现两个值的交换,而不必使用临时变量。 例如交换两... 阅读全文

posted @ 2011-08-30 17:20 原来... 阅读(38767) 评论(0) 推荐(11) 编辑

再次看递归
摘要:#include<iostream>#include<set>using namespace std;void up_and_down(int i){cout<<i<<" "<<&i<<endl;if(i<4)up_and_down(i+1);cout<<i<<" "<<&i<<endl;}int main(){up_and_down(1);return 0;}运行结果如下:首先, main() 使用参数 1 调用 阅读全文

posted @ 2011-08-29 19:40 原来... 阅读(470) 评论(0) 推荐(0) 编辑

C++中静态成员函数访问非静态成员变量
摘要:C++中静态成员函数访问非静态成员变量先看一个classclass a{public:staticFunctionA(){menber=1;}private:intmenber;}编译上述代码,出错。原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存。静态成员函数没有隐含的this自变量。所以,它就无法访问自己类的非静态成员。(看过一篇很好的文章《浅析C++中的this指针》介绍这个方面的详细内容)那要想访问怎么办呢?地球人都知道只要将:intmenber;//changethelineaboveto:s 阅读全文

posted @ 2011-08-29 11:03 原来... 阅读(18577) 评论(1) 推荐(1) 编辑

1 2 3 4 下一页

导航