
c++
NitefullSand
这个作者很懒,什么都没留下…
展开
-
多维数组
C++ 支持多维数组。多维数组声明的一般形式如下:type name[size1][size2]...[sizeN];例如,下面的声明创建了一个三维 5 . 10 . 4 整型数组:int threedim[5][10][4];二维数组多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:type arrayName [ x原创 2016-11-02 21:46:31 · 381 阅读 · 0 评论 -
static
static: 修饰局部变量: 可以把局部变量变为静态变量。意思就是:程序一启动就加载,程序退出才会回收空间(跟全局变量很像) 。其作用域不变 静态变量:用static修饰的局部变量就叫静态变量。 修饰全局变量:让全局变量只能在本模块(文件)中访问。不可以extern 修饰函数:修饰函数的话,只能在本模块(文件)中访问。 类成员函数、成员变量:表示属于一个类而不是属于此类的原创 2016-11-09 21:00:03 · 240 阅读 · 0 评论 -
文章标题
内存分区 栈区: 所有局部的变量,由系统自动管理,出了作用域就回收。连续空间 堆区: 程序员自己申请开辟的空间,都是在堆区,程序员自己维护回收。不连续空间 。 全局区(静态区): 所有的全局变量和静态变量,程序一启动就开辟,程序退出才回收。 bss段和data段 : bss段保存的是所有未初始化的全局变量和静态变量(只是记录一下,记录有多大) 常量区:rodata段。就原创 2016-11-09 21:02:19 · 241 阅读 · 0 评论 -
出现次数最多的字符
#include <iostream>#include <cstring>#include <map>using namespace std;char max_char(string str){ char max_c = ' '; // 出现次数最多的字符 int max_c_count = 0; // 出现的次数 map<char, int> char原创 2016-11-13 21:33:20 · 468 阅读 · 0 评论 -
第一个不同字符的位置
#include <iostream>using namespace std;int index(string first, string second){ int i; // 循环两个字符串,循环结束条件是任意一个字符串结束 for(i=0; i<first.length(), i<second.length(); i++) { if(first[原创 2016-11-13 21:36:35 · 398 阅读 · 0 评论 -
动态内存
动态内存基础栈:在函数内部声明的所有变量都将占用栈内存 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。 很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。 在 C++ 中,您可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址。这种运算符即 new 运算符。 如果您不需要动态分配内存,可以使用原创 2016-11-14 15:21:13 · 251 阅读 · 0 评论 -
构造函数VS析构函数
先构造的后析构,后构造的先析构,它相当于一个栈,先进后出。原创 2016-11-14 15:26:05 · 335 阅读 · 0 评论 -
命名空间
假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。 因此,引入了命名空间这个概念原创 2016-11-14 15:50:41 · 313 阅读 · 0 评论 -
模板
什么是模板?假设现在我们完成这样的函数,给定两个数x和y求式子x^2 + y^2 + x * y的值 .考虑到x和y可能是 int , float 或者double类型,那么我们就要完成三个函数: int fun(int x,int y); float fun(float x,float y); double fun(double x,double y); 并且每个fun函数内部所要完成的操原创 2016-11-14 16:05:24 · 322 阅读 · 0 评论 -
枚举类型
枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。 如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓”枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。 创建枚举,需要使用关键字 enum。 例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 “blue”。原创 2016-11-02 20:03:27 · 305 阅读 · 0 评论 -
C++存储类
auto存储类auto存储类是所有局部变量默认的存储类{ int mount; auto int month;}register存储类register存储类是用于定义存储在寄存器中而不是RAM中的局部变量,这意味着变量的最大尺寸=寄存器的大小。而且不能对他应用一元的‘&’运算符(因为它没有内存位置){ register int miles;}寄存器只用于需要快速访问的变量,比转载 2016-11-02 20:30:05 · 296 阅读 · 0 评论 -
++a和a++
输入:#include <iostream>using namespace std;main(){ int a = 21; int c ; // a 的值在赋值之前不会自增 c = a++; cout << "Line 1 - Value of a++ is :" << c << endl ; // 表达式计算之后,a 的值增加 1 cout << "原创 2016-11-02 20:33:25 · 832 阅读 · 0 评论 -
函数
函数的声明告诉编译器函数的名称、返回类型和参数;函数的定义提供了函数的实际主体。eg:函数strcat()用于连接两个字符串,函数memcpy()用于复制内存到另一个位置。定义函数C++ 中的函数定义的一般形式如下:return_type function_name( parameter list ){ body of the function}*返回类型:一个函数可以返回一个值。retu原创 2016-11-02 21:14:15 · 538 阅读 · 0 评论 -
C++随机数
在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。 下面是一个关于生成随机数的简单实例。实例中使用了 time() 函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数:#include <iostream>#include <ctime>#include <cstdl原创 2016-11-02 21:20:07 · 265 阅读 · 0 评论 -
const
const准确的说应该是一个只读的变量,其值在编译时不能被使用,修饰的只读变量。被const修饰的只读变量必须在定义的同时初始化。编译器通常不为普通const只读变量分配存储空间,而是将他们保存在符号表中,使得其成为一个编译期间的值,没有了存储与读内存的操作,使得它效率也很高。 const修饰数组:定义或说明一个只读数组 int const a[]={};const int a[]={}; co原创 2016-11-09 20:58:11 · 276 阅读 · 0 评论 -
矩阵乘法
矩阵可乘条件:(前列数=后行数)#include <iostream>using namespace std;//构造矩阵类,重载乘法操作符 //作者:nuaazdh //Matrix矩阵类 class Matrix{public: Matrix(int mm, int nn)//构造函数 { m = mm; n = nn;转载 2016-11-06 21:43:07 · 383 阅读 · 0 评论 -
字符串
下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 “Hello” 的字符数多一个。char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};依据数组初始化规则,您可以把上面的语句写成以下语句:char greeting[] = "Hello";输入:#include <iostream>using原创 2016-11-02 21:57:46 · 244 阅读 · 0 评论 -
指针
指针 动态内存分配,没有指针是无法执行的。 每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include <iostream>using namespace std;int main (){ int var1; char var2[10]; cout << "var1原创 2016-11-02 22:07:44 · 221 阅读 · 0 评论 -
类和对象
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类被称为类的成员。类定义定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。 类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一原创 2016-11-03 19:48:32 · 287 阅读 · 0 评论 -
类成员函数
类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。 让我们看看之前定义的类 Box,现在我们要使用成员函数来访问类的成员,而不是直接访问这些类的成员:class Box{ public: double length; // 长度 double原创 2016-11-03 19:54:25 · 634 阅读 · 0 评论 -
类访问修饰符
类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问说明符。 一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是 private。class原创 2016-11-03 20:02:42 · 333 阅读 · 0 评论 -
构造函数
类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。#include <iostream>using namespace std;class Line{ public: void setLength( double len )原创 2016-11-03 20:12:54 · 298 阅读 · 0 评论 -
析构函数
类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。 析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。#include <iostream>using namespace std;class Line{ public: void原创 2016-11-03 20:14:48 · 342 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象,并从函数返回这个对象。 如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下:cla原创 2016-11-03 20:20:37 · 290 阅读 · 0 评论 -
this指针
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。 友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。#include <iostream>using namespace std;class Box{ public: // 构造函数定义原创 2016-11-03 20:23:54 · 286 阅读 · 0 评论 -
最大子集和
选出一个数组里的一个连续子集,使这个子集相加的和为所有子集中最大。 举例:给定一个数组为[-2, 1, -3, 4, -1, 2, 1, -5, 4], 输出结果为:[4, -1, 2, 1],他的元素相加和为6为所有子集中最大。函数原型:RETCODE maxSubArray(int[] inputArr, int inputLen, int[] outSubArr, int outLen)in原创 2016-11-06 20:48:54 · 1901 阅读 · 0 评论 -
引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。引用VS指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。引用必须在创建时被初始化。指针可以在任何时间被初始化创建引用在这些声原创 2016-11-02 22:18:40 · 332 阅读 · 0 评论 -
参数传递方式
按值方式和按引用方式是函数参数传递的两种方式。按值方式将实参的值传递给一个无关的变量(形参),而按引用方式中形参与实参共享相同的变量。从语义角度看,按引用方式可以理解为按共享方式。 当使用按引用方式时,形参和实参的类型必须是相同的。原创 2016-11-06 22:13:22 · 271 阅读 · 0 评论 -
头文件
使用函数的一大好处就是可以重用,为了使一个函数能够在其他程序中使用,我们需要将函数放在一个分离的文件中,这种文件称为头文件。习惯上,头文件以.h为扩展名。在程序中使用预处理命令#include包含头文件,以便重用在头文件中定义的函数。 eg:mylib.hbool isEven(int number){ return(number%2==0);}Usemylib.cpp#include原创 2016-11-06 22:20:57 · 412 阅读 · 0 评论 -
数组
C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。数组中的特定原创 2016-11-02 21:32:35 · 294 阅读 · 0 评论