
C++基础
奋发向上的少年
不积跬步,无以至千里,不积小流,无以成江海
展开
-
迭代器介绍
我们知道可以使用下标运算符来访问string对象的字符或vector对象的元素,还有一种更通用的机制也可以实现同样的目的,这就是迭代器 1. 迭代器的使用获取迭代器不是使用取地址符,而是具有迭代器的类型同时会拥有返回迭代器的成员。比如:begin和end,其中begin成员负责返回指向第一个元素的迭代器,end成员负责返回指向容器尾元素的下一位的迭代器,也就是说,该迭代器自带的元素是一个本原创 2015-04-23 18:44:01 · 477 阅读 · 0 评论 -
C++中交换值与比较值的另类实现方式
1. 比较几个值的另类实现: 例题1:有两个变量a和b,不用"if", "?:", "switch"或其他判断语句,如何实现找出两个数中比较大的那个。 方法1:int max = ( (a + b) + abs(a -b) ) / 2; 解析:分如下两种情况:若a > b, abs(a - b) = a - b ,因此,int max = (a + b + a原创 2016-07-20 22:36:51 · 497 阅读 · 0 评论 -
C++语言中位运算符在计算中的实际运用
位运算符:1.表达式:X&(X-1) 解释:每执行一次x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的那个1)变为0。(假设该位为第k位,减1后,该位后面全部变成1,但是由于该位是最右边的1了,所以x的第k位后面全是0,而x-1的第k位是0,从1到k-1位全是1,按位与的结果自然就是第k位和1~k原创 2016-07-20 21:13:57 · 595 阅读 · 0 评论 -
float类型在内存中的存储
首先还是看一道题目:#include "stdafx.h"#include #include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ float a = 1.0f; cout << (int)a << endl; //结果为1 cou转载 2016-07-20 14:51:12 · 972 阅读 · 0 评论 -
数组指针与指针数组及指针与数组的辨析
指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面哪个是数组指针,哪个是指针数组呢:int *p1[10];int (*p2)[10];这里需要明白一个符号之间的优先原创 2016-07-24 12:14:47 · 296 阅读 · 0 评论 -
指针的加减操作及对指针和数组类型的理解
先来看看一道题,分析指针的加减操作:例题1:写出下面程序的运行结果int a[3];a[0] = 0,a[1] = 1,a[2] = 2;int *p,*q;p=a;q = &a[2]; cout可作如下验证程序:int main (){ int a[3]; a[0] = 0,a[1] = 1,a[2] = 2; int *p,*q; p=a; cout<<p原创 2016-07-23 16:54:35 · 1718 阅读 · 0 评论 -
C++内存分配与管理
一道题引发的血案。。。。题目:以下三条语句分别输出什么?void main(){ char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc";转载 2016-07-18 00:30:31 · 341 阅读 · 0 评论 -
sizeof用法总结
sizeof用法总结:例子1:int main(int argc, char *argv[]){ char *ss = "0123456789"; cout<<sizeof(ss)<<endl; //结果为4,ss是指向字符串常量的字符指针,类型为指针。 cout<<sizeof(*ss)<<endl; //结果为1,*ss是字符串的第一个字符,类型为char。原创 2016-07-23 10:42:23 · 1248 阅读 · 0 评论 -
Effective C++ (item1、item 2)
最近在看Effective C++,顺便做一些记录:Item1: 我们可以将C++看做四大部分的集合,分别是1. C语言: 其中包括了区块(blocks)、语句(statements)、预处理器(preprosser)、内置数据类型(built-indata types)、数组(arrays)、指针(pointers)等2. 面向对象C++: 其中包括类、分装(encapsul原创 2015-12-27 22:43:57 · 389 阅读 · 0 评论 -
类的静态成员
总结下类的静态成员的一些基础知识:有时候类需要它的一些成员与类本身直接相关,而不是与类的各个对象保持联系,此时我们就把该成员定义成类的静态成员。1.声明静态成员:在成员的声明之前加上关键字static使得其与类关联在一起,和其他成员一样,静态成员可以使public或paivate的,静态数据成员的类型可以是常量、引用、指针、类类型等。class Account{public:原创 2015-12-27 21:52:59 · 595 阅读 · 0 评论 -
左值、右值与右值引用
1.辨析左值与右值:在C语言中,我们常常会提起左值(lvalue)、右值(rvalue)这样的称呼。而在编译程序时,编译器有时也会在报出的错误信息中包含左值、右值的说法。不过左值、右值通常不是通过一个严谨的定义而为人所知的,大多数时候左右值的定义与其判别方法是一体的。一个最为典型的判别方法就是,在赋值表达式中,出现在等号左边的就是“左值”,而在等号右边的,则称为“右值”。比如:a原创 2015-08-19 09:57:23 · 427 阅读 · 0 评论 -
C风格字符串
C风格字符串的定义如下:C程序把指向以空字符结束的字符数组的指针视为字符串。在C++中,字符串字面值就是C风格字符串。C标准库定义一系列处理这种字符串的库函数,C++中将这些标准库函数放在cstring头文件中。由于C风格字符串本质上容易出错,C++程序应该优先使用C++标准库类string而少使用C风格字符串。C++标准库类string比C风格字符串更安全,效率更高。网络程序中大量的安全漏洞原创 2015-08-17 14:27:17 · 534 阅读 · 0 评论 -
字符串类型<string>
C++定义了一个内容丰富的抽象数据类型库,其中,string和vector是两种最重要的标准库类型,前者支持可变长字符串,后者则表示可变长的集合。还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符或vector中的元素。本篇将介绍string类型。标注库类型string表示可变长的字符序列,使用string类型必须首先包含string原创 2015-04-22 19:57:15 · 582 阅读 · 0 评论 -
标准库类型<vector>
标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。因为vector中容纳着其他类型的对象,因此也被称作容器。要想使用vector,必须包含头文件#include定义和初始化vector对象 默认初始化vector对象,创建一个指定类型的空vector: vector svec;原创 2015-04-23 14:57:24 · 679 阅读 · 0 评论 -
代替类型名:关键字typedef、auto、decltype的使用讲解
介绍类型的别名定义及自动判断功能原创 2015-08-16 20:57:26 · 1014 阅读 · 0 评论 -
辨析对常量的引用、指向常量的指针、常量指针
介绍有关于const的C++基础知识原创 2015-08-16 17:01:38 · 641 阅读 · 0 评论 -
由sizeof求结构体大小时涉及到的数据对齐
本博文转自http://www.cnblogs.com/dolphin0520/ 作者:海子结构体字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各转载 2016-07-22 10:44:28 · 1771 阅读 · 0 评论