C++基础每日一练
yulanarti
这个作者很懒,什么都没留下…
展开
-
2010/10/25
声明、定义、const、引用原创 2010-10-25 12:34:00 · 390 阅读 · 0 评论 -
2010/11/7
<br />2010/11/7<br />关键字:使用预编译器进行调试<br /> <br />预编译变量<br />C++标准<br />#ifndefNDEBUG<br /> //...<br />#endif<br />VC8编译器<br />#ifdef_DEBUG<br /> //...<br />#endif<br /> <br />其他预编译变量:__FILE__、__LINE__、__TIME__、__DATE__<br />assert<br />另一种调试技术是assert(原创 2010-11-10 16:37:00 · 434 阅读 · 0 评论 -
2010/11/8
<br />2010/11/8<br />关键字:函数<br />函数零散知识点<br />通常函数不应该有vector和其他标准库容器类型的形参.调用含有普通的非引用vector形参的函数会复制vector中的每一个元素.<br />有两种方法避免,将形参改为引用类型或将需要处理的迭代器作为形参来传递容器.<br />数组做形参<br />1. 数组有两个特性,一是不能复制数组,二是使用数组名字时,数组名会自动转换为指向其第一个元素的指针.虽然不能直接传递数组,但是函数的形参可以写成数组的形式.原创 2010-11-10 16:39:00 · 407 阅读 · 0 评论 -
2010/11/10
<br />2010/11/10<br />关键字:函数重载、函数指针<br />函数重载<br />出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数(overloaded function)。<br />main函数不能重载。<br />如果两个函数声明的返回类型和形参完全相同,则将第二个函数声明为第一个的重复声明。如果形参表完全相同,但是返回类型不同,则第二个声明是错误的。<br />编译器会忽略函数的形参名字,下面的声明是等价的:<br />void func(int i)原创 2010-11-11 12:21:00 · 504 阅读 · 0 评论 -
2010/11/9
<br />2010/11/9<br />关键字:函数<br />零散知识点<br />1. 主函数main的返回值是有一定意义的,返回0代表正常运行,其他大部分返回值则表示失败.返回码的意义跟机器有关,cstdlib头文件中定义了两个预处理变量,分别表示程序运行成功和失败:<br />#defineEXIT_SUCCESS 0<br />#defineEXIT_FAILURE 1<br />2. 如果main函数没有显式返回值,则编译器会隐式的插入返回0的语句.<br />原创 2010-11-10 16:40:00 · 396 阅读 · 0 评论 -
2010/11/5
<br />2010/11/5<br />关键字:delete、类型转换<br /> <br />delete<br />1. 必须确保delete的指针是用new分配的地址指针.<br />2. 0指针可以delete,但是没有任何意义.<br />3. 多次重复delete同一块内存会破坏自由存储区.<br />4. const动态对象也需要用delete释放掉.<br />constchar*p = newchar;<br />deletep;<br />5.原创 2010-11-08 12:12:00 · 387 阅读 · 0 评论 -
2010/11/06
<br />2010/11/6<br />关键字:语句<br /> <br />零散知识点<br />1. for循环中声明的变量在for循环外是不可见的,但是早期C++编译器还是支持的.VC8不支持,VC6支持.<br />2. 悬垂else.<br />if (/**/)<br /> if (/**/)<br /> {<br /> }<br />else<br />{<br />}<br />else实际是对应内层的if的.<br />else匹配给最后出现的原创 2010-11-08 12:10:00 · 357 阅读 · 0 评论 -
2010/11/04
<br />2010/11/4<br />关键字:算术表达式<br /> <br />零散知识点<br />1. 短路求值,&&和||.<br />2. bool字面值的true为1,flase为0<br />if (val) //正确<br /> ...<br />if (val == true)//错误<br /> ...<br />3. 位操作符操作signed的整型时,系统无法确保如何处理其操作数的符号位.所以强烈建议使用unsigned原创 2010-11-05 12:54:00 · 333 阅读 · 0 评论 -
2010/11/03
<br />2010/11/3<br />关键字:C风格字符串<br /> <br />C风格字符串(C-style character string)<br />以空字符null结束的字符数组.<br />charc1[] = {'C', '+', '+'}; //不是C风格字符串<br />charc2[] = "C++"; //是<br /> <br />C风格字符串标准库<br />必须包含头文件#include<cstring><br />cstring是strin原创 2010-11-04 21:25:00 · 392 阅读 · 0 评论 -
2010/11/01
<br />2010/11/1<br />关键字:指针<br /> <br />指针的声明、定义和初始化<br />理解指针声明语句时需要从右向左阅读.<br />char *p1, p2;<br />p2为char型变量,p1为char型指针.<br /> <br />一个有效的指针必须是以下三种状态之一:<br />1. 保存一个特定对象的地址.<br />2. 指向某个对象后面的另一个对象.<br />3. 0值.<br /> <br />一定要避免使用未初始化的指针.必须原创 2010-11-02 17:31:00 · 407 阅读 · 0 评论 -
2010/10/31
2010/10/31关键字:数组数组声明数组的维数必须用值大于等于1的常量表达式定义。包括整型字面值、枚举常量或用常量表达式初始化的const对象。即数组的维数必须在编译时确定。#includeusingstd::vector;constintbufsize = 10;intGetSize(){ return 0;}constinti = GetSize(); //i位于常量内存区中,未初始化intmain(){ chararray[i];原创 2010-11-01 22:58:00 · 526 阅读 · 0 评论 -
2010/11/02
<br />2010/11/2<br />关键字:指针和const限定符<br /> <br />用const限定指针<br />唯一的作用是不能通过解引用该指针的方式修改所指向的对象的值.<br />constint *p; //const指针声明时可以不初始化,虽然是不被推荐的<br />constintval1 = 0;<br />intval2 = 0;<br />p = &val1; //const指针可以指向const对象<br />p = &val原创 2010-11-02 17:32:00 · 359 阅读 · 0 评论 -
2010/10/30
2010/10/30关键字:bitsetbitset使用bitset必须包含头文件和命名空间:#includeusing std::bitset;类似vector,bitset类也是一种模板,但其对象区别在于长度而不是类型.在定义bitset时要明确bitset含有多少位,必须在中给出长度:bitset bitvec; //32位初始化为全0有下面几种初始化方式:bitset初始化方式bitset b;b有n位,初始化为全0bitset b(u);b有n位,初始化为unsigned lon原创 2010-11-01 22:33:00 · 346 阅读 · 0 评论 -
2010/10/29
<br />2010/10/29<br />关键字:string、vector、迭代器<br /> <br />可以用using std::cin;代替using namespace std;如果程序中只使用了cin。同理可以用using std::cout;using std::endl;等<br /> <br />头文件中应该只定义确实必要的东西。因为头文件还会被其他源文件多次引用,增加出错的机会还会增大程序体积.<br /> <br />string s;cin>>s;时将忽略开头的空格,在遇到后面第原创 2010-10-30 00:06:00 · 376 阅读 · 0 评论 -
2010/10/28
<br />2010/10/28<br />关键字:new、delete、allocator<br />string *sp = new string(“123456”); //new表达式<br />实际有3个步骤:<br />1. 调用operator new标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象<br />2. 运行该类型的适当的构造函数,用指定初始化式构造对象<br />3. 返回新分配并构造的对象的地址<br />delete sp;原创 2010-10-30 00:04:00 · 416 阅读 · 0 评论 -
2010/10/27
<br />2010/10/27<br />关键字:C/C++中的内存区域划分<br /> <br />C中的内存区域划分<br />1. 栈 - 由编译器自动分配释放。<br />2. 堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。<br />3. 全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束释放。<br />4. 另外还有一原创 2010-10-27 21:52:00 · 410 阅读 · 0 评论 -
2010/10/26
2010/10/26关键字:基本内置类型、整型、浮点型、字面值常量、变量初始化C++标准规定了每个算术类型的最小存储空间,但不阻止编译器使用更大的存储空间。类型含义最小存储空间一般存储空间bool布尔型char字符型8位8wchar_t宽字符型16位16short短整型16位16int整型16位32long长整型32位32float单精度浮点型6位有效数字32double双精度浮点型10位有效数字64long double扩展精度浮点型10位有效数字96或128原创 2010-10-26 22:04:00 · 423 阅读 · 0 评论 -
define与inline的区别
<br />介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的<br />功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如<br />#define TABLE_COMP(x) ((x)>0?(x):0) <br />就定义了一个宏。<br /><br /> 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数<br />所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行<br />该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的转载 2011-03-02 10:57:00 · 2458 阅读 · 1 评论