C/C++
文章平均质量分 70
绝杀fc小飞侠
这个作者很懒,什么都没留下…
展开
-
关于void main
来源:http://tieba.baidu.com/p/311373516 很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */转载 2013-03-22 10:38:46 · 942 阅读 · 0 评论 -
指针常量和常量指针
转自:http://www.cnblogs.com/tracy-710030663/articles/3026105.html指针常量:type * const p(p不可变,*p可变)常量指针:const type * p(p可变,*p不可变) 下面看4个简单的例子,可以说明他们的区别: 第一个 1 void原创 2013-04-17 13:41:48 · 571 阅读 · 0 评论 -
C++ primer 学习 (1)
记录一些不是很清楚、理解不深的知识。1.左值和右值:(左值可以出现在赋值语句的左边和右边,右值只可以出现在右边)int price = 0; price = price + 1;2. 变量命名:一般使用小写字母,便于记忆。包含多个词可全小写加下划线,或者每个内嵌单词首字母大写;student_name ; studentName ; 最重要的是保持一致。3.初始原创 2013-04-25 21:17:20 · 638 阅读 · 1 评论 -
C++ primer 学习(2)
1.vector中仅能对确知已存在的元素进行下标操作。for(vector::size_type ix=0;ix!=10;++ix) ivec.[ix] = ix;这样是不能成功添加0-9这10个元素的;for(vector::size_type ix=0;ix!=10;++ix) ivec.push_back(ix);使用插入才能添加。原创 2013-04-25 22:07:38 · 596 阅读 · 0 评论 -
c++迭代器
转:http://zhanghu-hs.blog.sohu.com/129119232.htmlvector::const_itertor; //容器是常量const vector::itertor; // 迭代器是常量const_vector类型只能用于读取容器内元素,但不能改变其值。当我们对const_iterator类型解引用时,得到一个指向const对象的引转载 2013-04-27 00:00:16 · 671 阅读 · 0 评论 -
c语言编程规范和约定
1.缩进量=4;用空格代替tab2.case向左与switch对齐;3.程序标号向左顶格;空行的使用:1.不同逻辑段落之间;2.函数之间;3.变量申明和函数之间;4.逻辑段落之间;空格的使用:1.“==、=、+、-、*、/、>、=、“运算符,左右两边加空格2.标点符号前面不加,后面加空格3.if、for、while后加空格4.多重括号原创 2013-04-21 16:08:50 · 870 阅读 · 1 评论 -
数据结构 链式 栈 c实现
转:http://blog.chinaunix.net/uid-20698826-id-3129410.html#include #include #define OK 1#define FALSE 0#define TRUE 1#define ERROR 0typedef int Status;typedef int SElemType;//结点类型typedef s转载 2013-05-01 15:38:40 · 836 阅读 · 1 评论 -
struct / typedef
struct定义一个结构:struct 结构名{ 成员列表}变量名列表定义一个指向结构的指针struct 结构名 *结构指针变量名如:struct stu *pstu ;类型定义符 typedef有用户自己定义类型说明符:typedef int INTEGER ; INTEGER a , b ; 等效于 int a , b ;原创 2013-05-01 17:20:41 · 906 阅读 · 0 评论 -
c/c++ 字符 字符串
string类型是C里面没有的,C++为了强化对字符串的操作,专门设定的string类。C中定义一个字符常量,可以赋值给一个字符变量,但是不能将字符串常量赋值给字符变量。(可以使用数组或指针)char c = 'a' ; char c = "i miss you" ; (错) --> char *c = "i miss you" ;字符常量占一个字节的原创 2013-05-01 09:47:18 · 816 阅读 · 0 评论 -
C/C++ struct union 对齐方式与#pragma pack()宏定义
转:http://www.360doc.com/showWeb/0/0/282371996.aspx有如下的两个结构体:struct A struct B { { int a;转载 2013-05-02 10:37:08 · 2144 阅读 · 1 评论 -
Primer学习(六)
析构函数常用于释放在构造函数或在对象生命周期获取的资源。何时调用析构函数1>撤销类对象时会自动调用析构函数动态分配的对象只有在指向对象的指针被删除时才撤销。如果没有删除指向动态对象的指针,则不会运行该对象的析构函数,对象就一直存在,从而导致内存泄漏。《只有删除指向动态分配对象的指针或实际对象超出作用域,才会运行析构函数。2>撤销一个容器时。容器中元素懂是按逆序撤原创 2013-05-15 14:52:34 · 591 阅读 · 0 评论 -
循环队列 顺序存储 C实现
转:http://blog.csdn.net/lzf824446/article/details/6725724#include #include #define M 6 //数组长度 #define bool char //c语言中没有bool类型,自己添加的 #define true 1 #define false 0 typedef stru转载 2013-05-02 18:24:29 · 868 阅读 · 0 评论 -
队列 顺序存储
使用一组地址连续的存储单元依次存放队列中元素,同时需要两个指针front和rear分别指示队列头元素和尾元素的位置。其实front和rear也不能叫做指针,因为队列顺序存储结构定义是这么写的:#define MAXQSIZE 100 //最大队列长度typedef struct{ QElemType *base; int front; int rear;原创 2013-05-02 17:58:39 · 913 阅读 · 0 评论 -
关于字符串
1 字符串拷贝题目描述: 要求实现库函数strcpy,原型声明:extern char *strcpy(char *dest,char *src); 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。原创 2013-05-10 20:32:42 · 1122 阅读 · 1 评论 -
memset()、assert()函数
函数名: memset 功 能: 设置s中的所有字节为ch, s数组的大小由n给定 用 法: void *memset(void *s, char ch, unsigned n); 程序例: #include #include #include int main(void) { char buffer[] = "Hello world\n";转载 2013-05-03 14:38:12 · 733 阅读 · 0 评论 -
a,&a,&a[0]
关于数组的一道题:int a[5]={1,2,3,4,5}; printf("a: %d\n",a); printf("&a: %d\n",&a); printf("&a[0]: %d\n",&a[0]); printf("a+1: %d\n",a+1); printf("&a+1: %d\n",&a+1); printf("&a[0]+1: %d\n",&a[0]+1)原创 2013-05-04 11:02:35 · 1146 阅读 · 0 评论 -
查找给定区间内第K大/小的数
源自:http://blog.csdn.net/v_JULY_v/article/details/6452100主要解决的是一维数组中,寻找给定区间第k小(大)的数。思路:1.通常会将给定的区间的树排序,然后遍历找出目标数。#include #include using namespace std; struct node{原创 2013-05-20 16:11:30 · 1176 阅读 · 0 评论 -
数据结构 - 哈希表
源自:http://blog.csdn.net/ncepustrong/article/details/8448187一、哈希表 哈希表又称散列表。哈希表存储的基本思想是:以数据表中的每个记录的关键字k为自变量,通过一种函数H(k)计算出函数值。把这个值解释为一块连续存储空间(即数组空间)的单元地址(即下标),将该记录存储到这个单元中。在此称该函数H为哈希函数或散列函数。原创 2013-05-20 23:14:19 · 1190 阅读 · 1 评论 -
插入排序-直接插入排序 希尔排序
#include //方法一void insert_sort(int *x, int n) { int i, j, t; for (i=1; i <n; i++) /*要选择的次数:1~n-1共n-1次*/ { /* 暂存下标为i的数。注意:下标从1开始,原因就是开始时原创 2013-05-09 19:41:02 · 788 阅读 · 1 评论 -
单链表反转 - 有序链表合并 - 子树包含
链表定义:struct ListNode{int m_nValue;ListNode* m_pNext;};1。题目描述:定义一个函数:输入一个链表的头结点,反转该链表并输出反转后链表的头节点。ListNode* ReverseList(ListNode* pHead){ ListNode* pReversedHead = NULL; ListNo原创 2013-05-23 15:17:08 · 778 阅读 · 0 评论 -
Primer 学习 -
#include #include using namespace std;int main(){ const char ca[] = {'h','e','l','l','o'}; const char *cp = ca; while (*cp) { cout<<*cp<<endl; ++cp; } return 0;}代码有问题,ca为并不是以null结尾,所原创 2013-05-10 09:33:44 · 664 阅读 · 0 评论 -
关于printf打印输出格式
%a 浮点数、十六进制数字和p-记数法(C99)%A 浮点数、十六进制数字和p-记法(C99)%c 一个字符 %d 有符号十进制整数 %e 浮点数、e-记数法%E 浮点数、E-记数法%f 浮点数、十进制记数法 %g 根据数值不同自动选择%f或%e.%G 根据数值不同自动选择原创 2013-05-23 22:58:02 · 874 阅读 · 1 评论 -
二叉树 => 链表
源自:http://blog.csdn.net/lilypp/article/details/6525256将搜索二叉树转换成链表,不能创建新的节点,只能改变指针的指向。 无论是转换成单向链表还是双向链表,节点的顺序都是:1-2-3-4-5-6-7,等于中序遍历的顺序。【1.1 二叉树-->双向链表】二叉树是一种很适合使用递归算法的数据结构,考虑根结点和转载 2013-05-24 14:59:45 · 811 阅读 · 0 评论 -
面试题练习
输入一个int,将它的十进制的数字从高到低位输出,用递归和非递归方法void func1(int a) { int b = 0; while(a) { b = b * 10 + a % 10; a = a / 10; } while(b) { cout<< b %原创 2013-05-09 22:45:43 · 642 阅读 · 0 评论 -
const成员函数
源自:http://zq2007.blog.hexun.com/8625800_d.html一些成员函数改变对象,一些成员函数不改变对象。例如: int Point::GetY(){ return yVal;} 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象: void Point:: SetPt (int x, int转载 2013-05-23 21:23:43 · 769 阅读 · 1 评论 -
C++ primer 学习(四)
函数:默认实参如果一个形参具有默认实参,那么,它后面的所有形参都必须有默认实参。int func(int a=0, int b=1, int c=2)如果是int func(int a=0, int b, int c=2)或者int func(int a=0, int b, int c)等都是错误的。函数调用的实参按位置解析,默认实参只能用来替换函数调用缺少的尾部实原创 2013-05-12 10:34:32 · 718 阅读 · 0 评论 -
C++ Primer 学习 (三)
关于主函数main()int main(int argc, char *argv[]){}或者int main(int argc, char **argv){}关于函数返回类型return用于void;return expression;与返回类型一致。返回非引用类型:函数的返回值用于初始化在调用函数处创建的临时对象。string make_plural(s原创 2013-05-11 22:06:28 · 613 阅读 · 0 评论 -
size_t和size_type
size_type: 由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型 string抽象意义是字符串, size()的抽象意义是字符串的尺寸, string::size_type抽象意义是尺寸单位类型 string::size_type它在不同的机器转载 2013-05-25 22:34:28 · 689 阅读 · 0 评论 -
二叉树 - 建立
转:http://blog.csdn.net/qingtianweichong/article/details/8881047#include #include //typedef void * ElemType;typedef int ElemType;struct BinaryTree{ ElemType e; BinaryTree *left; BinaryTree转载 2013-05-11 18:47:41 · 644 阅读 · 0 评论 -
数据结构 - 赫夫曼树Huffman
//1.每次选取两个最小节点比较,结果添加一个节点。此时最小节点parent值不为-1,故下次循环将不会参加,相当于被删void create_huffman_tree(node *hftree,int n){ /// 建哈夫曼树 int m1, m2, x1, x2; //m1和m2分别取最小和次小的值,x1和x2对应相应的下标 for(int i=1;i这里从1到n-原创 2013-05-12 20:36:51 · 718 阅读 · 0 评论 -
C++ Primer 学习 (五)
静态局部变量一个变量位于函数的作用域,但生命期却跨越了这个函数的多次调用。当定义静态局部对象的函数结束时,静态局部对象不会撤销。在该函数被多次调用的过程中,静态局部对象会持续存在并保持它的值。size_t count_calls(){static size_t ctr = 0 ;return ++ctr;}int main(int argc, char *argv[]){原创 2013-05-12 10:44:32 · 859 阅读 · 0 评论 -
数据结构 - 查找
顺序查找顺序查找适合于存储结构为顺序存储或链接存储的线性表int Sequential_Search(elemtype s[], keytype Key, int n){ int i = 0 ; while (i < n && s[i].Key != Key) i++; if (s[i].Ke原创 2013-05-13 16:16:46 · 612 阅读 · 0 评论 -
const iterator和const_iterator
vector ivec; vector::const_iterator citer1 = ivec.begin(); const vector::iterator citer2 = ivec.begin(); *citer1 = 1; //error *citer2 = 1; //right ++citer1; //right ++citer2; //errorcons原创 2013-05-14 11:02:59 · 659 阅读 · 0 评论 -
c++中空类默认产生哪些成员函数
源自:http://blog.csdn.net/wjeson/article/details/7012424class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& );转载 2013-05-28 20:46:03 · 950 阅读 · 0 评论 -
C++拷贝构造函数
源自:http://blog.csdn.net/lwbeyond/article/details/6202256一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100; int b = a; 而类对象与转载 2013-05-29 16:44:51 · 683 阅读 · 0 评论 -
数据结构 - 平衡二叉树 AVL
部分内容源自:http://blog.csdn.net/xiewenbo/article/details/8011825 和 http://blog.csdn.net/ncepustrong/article/details/8446581总结的不错,综合一下,学习之用。一、 平衡二叉树在二叉查找树T中,若所有结点的平衡因子的绝对值均不超过1,则称T为一棵AVL树。原创 2013-05-15 17:39:12 · 1306 阅读 · 0 评论 -
数据结构 - 二叉树遍历
内容参考:http://blog.csdn.net/zbwzll2/article/details/8901994 和 http://blog.csdn.net/aoxiangzhiguanjun/article/details/8904794递归://前序遍历的算法程序 void PreOrder(BiTNode *root) { if(root==NULL)原创 2013-05-11 18:24:46 · 629 阅读 · 0 评论 -
关于C++多态性
源自:http://blog.csdn.net/hackbuteer1/article/details/7475622C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核转载 2013-05-29 14:57:37 · 682 阅读 · 1 评论 -
C++ 虚继承
源自:http://blog.csdn.net/xsh_123321/article/details/59562891.为什么需要虚继承如下图所示如果访问Der::Fun or Der::m_nValue就会带来二义性,无法确定是调用Base1的还是Base2的,所以为了解决多重继承情况下成员访问的二义性,引入了虚继承机制。一般继承转载 2013-05-29 22:39:03 · 1724 阅读 · 1 评论 -
C++虚析构函数
源自:http://blog.csdn.net/m6830098/article/details/8927689#include #include using namespace std; #include using namespace std; class Base { public:转载 2013-05-29 17:35:58 · 878 阅读 · 0 评论