1.数组

  • 数组存储同类型的值;
  • 数组使用下标或索引对元素进行标号,从0开始编号;
  • 只能在定义数组时才能使用初始化,此后就不可以了,也不能将一个数组赋给另一个数组;
  • 初始化数组时,提供的值可以少于数组元素的值。如果只对数组的一部分初始化,则编译器将把其他元素设置为0。因此,将数组中所有元素都初始化为0非常简单——只需显式地将第一个元素初始化为0,然后让编译器将其他元素都初始化为0即可:long totals[500] = {0}.

2.字符串

  要将字符串存储到数组中,最常用的方法有两种——将数组初始化为字符串常量、将键盘或文件输入读入到数组中。

3.string类

  • 可以使用c-风格字符串来初始化string对象;
  • 可以使用cin来将键盘输入存储到string对象中;
  • 可以使用cout来显示string对象;
  • 可以使用数组表示法来访问存储在string对象中的字符。

  c风格的字符串是用数组存放的,一般要以'\0'结束而c++主要以string类代替,更加高效,且不易出错
  例如:string str = "123";就是c++的风格;char str[4]="123";就是c风格。string是c++中的关键字,和int,float等等一样, 在c++中,string 定义的变量可以直接存储字符串。在C语言中是没有这种直接存储字符串的变量的。
  [ ]里面是4,是因为,C风格的字符串,在最后都会默认添加'\0',所以"123"本质上是1 2 3 '\0'
  它其实是占四个字节。所以如果你只定义3个存储空间的话,那'\0'这个字符串终止标志就回被丢弃,那么以后的应用就回出现问题。举个例子:你用strlen(str)试试查看长度为3时的这个字符串的长度,很可能就会有问题。 '\0' 是c字符串都存在的。

  string类可以使用运算符+将两个string对象合并起来,还可以使用+=将字符串附加到string对象的末尾。

  c++11还有wchar_t、char16_t和char32_t。对于这些类型的字符串字面值,c++分别使用前缀L、u和U表示。

4.结构

  结构比数组更灵活,因为同一个结构可以存储多种类型的数据.

  可以像创建char或int类型的变量那样创建如下的inflatable类型

5.指针

  一定要在对指针应用解除引用运算符(*)之前,将指针初始化为一个确定的、适当的地址。

为一个数据对象(可以是结构,也可以是基本类型)获得并指定分配内存的通用格式如下:

typeName * pointer_name = new typeName;

  new 分配的内存块通常与常规变量声明分配的内存块不同。常规声明分配在栈(stack)中,而new从被称为堆(heap)或自由存储区(free store)的内存区域分配内存。

  在编译时给数组分配内存被称为静态联编,但使用new时,如果在运行阶段,则创建它;如果不需要,则不创建。还可以在程序运行时选择数组的长度。这被称为动态联编。使用静态联编时,必须在编写程序时指定数组的长度;使用动态联编时,程序将在运行时确定数组的长度。

  使用new和delete时,应遵循以下规则:

  • 不要使用delete来释放不是new分配的内存;
  • 不要使用delete释放同一个内存块两次;
  • 如果使用new[]为数组分配内存,则应使用delete[]来释放;
  • 如果使用new[]为一个实体分配内存,则应使用delete(无方括号)来释放;
  • 对空指针应用delete是安全的。

  c++允许将指针和整数相加。加1的结果等于原来的地址值加上指向的对象占用的总字节数。还可以将一个指针减去另一个指针,获得两个指针的差。后一种运算将得到一个整数,仅当两个指针指向同一个数组时,这种运算才有意义,这将得到两个元素的间隔。

  new运算符允许在程序运行时为数据对象请求内存。该运算符返回获得内存地址,可以将这个地址赋给一个指针,程序将只能使用该指针来访问这块内存。如果数据对象是简单变量,则可以使用解除引用运算符(*)来获得其值;如果数据对象是数组,则可以像使用数组名那样使用指针来访问元素了如果数据对象是结构,则可以用指针解除引用运算符(->)来访问其成员。

  指针和数组紧密相关。如果ar是数组名,则表达式ar[i]被解释为*(ar+1),其中数组名被解释为数组第一个元素的地址。

  运算符new和delete允许显示控制何时给数据对象分配内存,何时将内存归还给内存池。自动变量是在函数中声明的变量,而静态变量是在函数外部或者使用关键字static声明的变量,这两种变量都不太灵活。自动变量在程序执行到其所属的代码块时产生,在离开该代码块时终止。静态变量在整个程序周期内都存在。

c++复合类型的更多相关文章

  1. 第54讲:Scala中复合类型实战详解

    今天学习了scala的复合类型的内容,让我们通过实战来看看代码: trait Compound_Type1trait Compound_Type2class Compound_Type extends ...

  2. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  3. go语言 类型:基础类型和复合类型

    Go 语言中包括以下内置基础类型:布尔型:bool整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint浮点型:floa ...

  4. C语言中的复合类型

    复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...

  5. 学习C++.Primer.Plus 4 复合类型

    本章介绍的有复合类型有: 数组. 字符串. 结构. 共用体. 指针 数组: 声明数组时数组长度必须为常量(或const). 只有初始化时可以用“=”,其它时候均不可以给数组直接赋值,除了赋值的元素以外 ...

  6. C++Primer快速浏览笔记-复合类型

    C++Primer2.3节介绍了两种复合类型:引用和指针 1.引用 引用并非对象,它只是为一个已经存在的对象所起的别名. 一旦初始化完成,引用将和它的初始值对象一直绑定在一起,不能重新绑定到另一个对象 ...

  7. Scala 深入浅出实战经典 第54讲:Scala中复合类型实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  8. struts复合类型传值(对象传值)

    01:导包,配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version ...

  9. c++学习总结--复合类型,const。

    复习c++,有必要对一些东西做一下笔记,方便以后学习,如有问题,欢迎提出. 首先,最常用两种复合类型应该是引用和指针. 所谓复合类型,是在基本类型基础(如:int)上定义的类型. 引用是c++的一个复 ...

  10. postgresql 函数 参数为复合类型

    postgresql没有存储过程,但是函数功能很强大. 在近期开发的电商管理平台中,对于产品的类目管理,设计时有个属性字段,设为字符数组,但是EF不支持数组的操作,所以在添加和修改类目时,需要对属性的 ...

随机推荐

  1. Swift4 构造体, 属性, 索引

    创建: 2018/02/19 完成: 2018/02/25 [任务表]TODO  构造体定义  定义的概要 struct 型名 { (变量/常量的定义) (构造函数的定义) (方法的定义) (其他定义 ...

  2. bzoj 3555: [Ctsc2014]企鹅QQ【hash+瞎搞】

    首先注意 先hash一下,双hash,然后枚举删去位置,把hash值排个序,把些相等的加起来统计一下对数即可 #include<iostream> #include<cstdio&g ...

  3. bzoj 4849: [Neerc2016]Mole Tunnels【模拟费用流】

    参考:https://www.cnblogs.com/CQzhangyu/p/6952371.html 费用流很简单,考虑但是会T. 考虑费用流的本质,流一次需要要找一个能够从当前点到达的距离最小的点 ...

  4. 洛谷 P3285 [SCOI2014]方伯伯的OJ

    看到这题,第一眼:平衡树水题,随便做一做好了 然后....我在花了n个小时去调试(维护平衡树父节点)之后,... 调了三个小时后,第一次失败的代码(只能查找排名为k的用户编号,不能根据编号查排名) # ...

  5. 455 Assign Cookies 分发饼干

    假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有一个尺寸 ...

  6. jmeter正则表达式提取器使用

    引用名称:请求中的参数需要引用的名称 正则表达式:从结果集中提取数据,例如从数据库查询结果中提取数据 模板:$1$表示提取表达式中的第一个值,$n$以此类推 匹配数字:0代表随机,1代表第一个值,n代 ...

  7. Oracle函数大全下载

    Oracle函数大全下载 是一个压缩包,里面是一个chm格式的帮助文档,很实用.

  8. 12.1Java-构造方法

    一.构造方法 作用:在new的同时对成员变量赋值,给对象的属性初始化赋值格式:权限 方法名(参数列表){}方法的名字,必须和类的名字完全一致,大小写一致构造方法不许写返回值类型,如void,int 构 ...

  9. .NET 几种数据绑定控件的区别

    GridView 控件 GridView 控件以表的形式显示数据,并提供对列进行排序.分页.翻阅数据以及编辑或删除单个记录的功能. 特征:一行一条记录,就像新闻列表一样:带分页功能. DataList ...

  10. 转载:如何使用RFT自动打开IE

    如何在RFT测试脚本中打开IE浏览器?   第一步,配置应用程序进行测试: “配置”菜单 ——> “配置应用程序进行测试...”,进入下面这个界面,默认三个自带的应用程序,点击“添加”加入IE. ...