目录

  • String类
    • string拼接 赋值
  • struct
    • 结构数组
    • 结构中的位字段
  • 共用体(union)
  • 枚举(enum)
    • 设置枚举量的值
    • 枚举量的取值范围
  • 指针与c++基本原理
    • 声明和初始化指针
    • 指针与数字
  • 引用

String类

使用string类,要包含头文件string;
string类位于名称空间std中,因此要提供一条using编译指令,或者使用std::string

#include <iostream>
#include <string>int main()
{using namespace std;string str1;string str2="bottom";cin>>str1;cout<<str2[2];return 0;
}

string拼接 赋值

string str1;
string str2="top";
str1=str2;//这种用法在数组中不被允许的

string的拼接可以用运算符+将两个string对象合并起来;

strcpy(str1,str2); //把str2的值拷贝给str1 等同于str1=str2
strcat(str1,str2); //把str2的内容添加到str1的后面这两个函数比上面两个函数多了一个参数(长度N)
strncpy();
strncat();

确定字符串中字符数的方法:

int len = str1.size();  //size()是类的一个方法,
int len1 = strlen(str1);

struct

c++中在声明结构体变量时,struct可省略;
与c中结构体不同的是,c++结构除了成员变量之外,还可以有成员函数;
c++中可以使用赋值运算符=将结构赋值给另一个同类型的结构,这种赋值被称为成员赋值;

struct person
{string name;int age;char sex;
};
person zs={"zhangsan",20,'m'};//在定义结构的同时完成创建结构变量的工作
struct person
{string name;int age;char sex;
}zs;
//这种没有名称的结构类型,除了在定义结构类型的时创建变量,以后就无法创建这种类型的变量
struct
{string name;int age;char sex;
};

结构数组

person pop[100];
这里的pop是一个person类型的数组,它的每一个元素都是person对象;
cout<<pop[2].name;在初始化结构数组:
person pop[2]=
{{"zhangsan",20,'m'},{"lisi",15,'n'}
};

结构中的位字段

字段的类型应为整型或枚举,可以使用没有名称的字段来提供间距。每个成员都被成为位字段。

struct regi
{unsigned int sn:4;unsigned int : 4;bool goodin:1;bool goodtor :1;
};初始化也以通常的方式去初始化这些字段;访问也是。

共用体(union)

共用体是一种数据类型,它能够存储不同的数据类型,但只能同时存储其中的一种类型。
共用体的长度是其最大成员的长度。
用途:当数据项使用的是两种或更多中格式时(不会同时使用),可节省空间;

当结构的其中一个数据成员为共同体时,要访问共用体当中的成员要使用:

结构体变量.共用体变量.共用体成员

若共用体为匿名共用体。其成员将成为位于相应地址处的变量,由于他们的地址相同。所以不需要中间标识符,访问时使用:

结构体变量.共用体变量

枚举(enum)

提供一种创建符号常量的方式

enum spet {red,orange,yellow,green,blue,violet,indigo,ultraviolet};这条语句完成了:
让spet成为新类型的名称,spet被称为枚举
将{red,orange,yellow,green,blue,violet,indigo,ultraviolet作为符号常量,它们对应的数值为0~7.这些常量叫做枚举量。

在不强制类型转换的情况下,只能将定义枚举时使用的枚举量赋给枚举的变量;

例如:
spet band ;
band= orange;//若band=1则为错误,因为1不是枚举量,orange才是

设置枚举量的值

显示的设置枚举量的值;
enum bits{one=1,two=2,four=4};指定的值要为整数。也可以显示的定义部分枚举量的值
enum bits{one,two=100,fou};
one在默认情况下为0,后面没有被初始化的枚举量的值将比前面的枚举量的值大1;fou为101还可以创建多个值相同的枚举量:
enum {zero,null=0,one,numero=1};
其中zero,null都为0,one,numero都为1

枚举量的取值范围

每个枚举都有取值范围,通过强制转换,可以将取值范围中的任何整数值赋给枚举变量。即使这个值不是枚举值。

enum bits{one=1,two=2,four=4};
bits flag;
flag=bits(3);3不是枚举值,但他位于枚举定义的取值范围内;
取值范围定义:首先,找出上限,需要知道枚举量的最大值。找到大于这个最大值的,最小值的2的幂。将他减去1,得到的是取值范围的上限,如果最小值不小于0,则取值范围的下限为0;例如最大值为101,比这个数大的最小2次幂是128,因此上限为127;下限与上限相同,但要加上负号。

选择用多少空间来存储枚举有编译器决定;

指针与c++基本原理

面向对象编程与传统的过程性编程的区别在于。oop强调的是在运行阶段进行决策,运行阶段指的是程序正在运行时,编译阶段指的是编译器将程序组合起来时。
运行阶段决策提供了灵活性,可以根据当时的情况进行调整。
在c++中,使用关键字new请求正确数量的内存以及使用只恨来跟踪新分配的内存的位置。

声明和初始化指针

指针在声明是必须指定指针指向的数据的类型。
在c++中,int* 是一种复合类型,是指向int的指针

在使用指针时,要注意!

在c++中创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。为数据提供空间是一个独立的步骤。
要在对指针应用解除引用运算符之前,将指针初始化为一个确定的,适当的地址。错误实例:
long *follow;
*follow=233;

指针与数字

要将数字值作为地址来使用,应通过强制类型转换将数字转换为适当的地址类型:

int* pt;
pt=(int *0)0xB9000000;

引用

在声明引用变量时进行初始化,必须在创建时进行初始化;

c++ 复合类型 读书笔记(二)相关推荐

  1. 《How Tomcat Works》读书笔记(二)

    <How Tomcat Works>读书笔记(二) 这是<How Tomcat Works>第一二章的读书笔记.第一张主要写了一个静态资源处理的web服务器,第二章加了对ser ...

  2. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

  3. 3D游戏设计读书笔记二

    3D游戏设计读书笔记二 一.简答题 • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系.   GameObjects是一个具体的实例,Assets是包括诸多游戏素材的资 ...

  4. 《Docker 技术入门与实践》-读书笔记二

    <Docker 技术入门与实践>-读书笔记一 <Docker 技术入门与实践>-读书笔记二 一.数据管理 用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据 ...

  5. 《Introduction To Modern Cryptography》读书笔记二

    <Introduction To Modern Cryptography>读书笔记二 本笔记纯粹个人读书习惯与相应见解,内容归纳完全出于个人需要与个人局限,如有修改意见(比如哪儿应该是值得 ...

  6. 《李元芳履职记》读书笔记二 IT技术管理的沟通与团队建设

    <李元芳履职记>读书笔记二 接一 https://blog.csdn.net/qq_45937199/article/details/103305223 IT技术人员从技术岗走向管理岗,所 ...

  7. python图像处理《数字图像处理与python实现》读书笔记二:空间滤波

    文章目录 重要! 第三章 空间滤波 概览 3.1 空间滤波基础 3.1.1 空间滤波的机理 3.1.2 空间滤波器模板 3.2 平滑处理 3.2.1 平滑线性空间滤波器 3.2.2 统计排序滤波器 3 ...

  8. 第一行代码 Android读书笔记(二)

    第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...

  9. 《淘宝技术这十年》读书笔记 (二).Java时代的脱胎换骨和坚若磐石

    马云说过"一个好的东西往往是是说不清楚的",姑且不论这句话的对与错.但我真的很佩服<淘宝技术这十年>这本书的作者子柳,能够通过淘宝的一些故事,按照时间顺序和IT发展的各 ...

最新文章

  1. iOS开发网络篇—多线程断点下载
  2. 搜索引擎优化(独立阐述)
  3. linux工作常用软件
  4. 如何建立自信心,不错!
  5. Heartbeat VIP/IP 与 别名/辅助IP
  6. COGS 36. 求和问题
  7. 动态代理,动态代理设计模式 ,JDK动态代理,cglib动态代理
  8. img 固定在父容器底部_容器苗容器怎么选?六种容器特点详解!
  9. CSS/CSS3常用样式与web移动端资源
  10. 汇编里的IMPORT和EXPORT
  11. kettle 参数传递_kettle 存储过程 参数传递参数
  12. 操作系统 - 沙箱(sandboxing)技术
  13. 超详细手把手教你App上线AppStore
  14. 使用java编写中国象棋(内含源代码)
  15. 《哈利波特》最低折扣
  16. Thunderbird – 开源免费跨平台邮箱客户端
  17. 垃圾分类回收APP开发解决方案
  18. 西安工大计算机学院李颖,李颖 -西安交通大学人文社会科学学院
  19. 连续8年 远见领跑|山石网科入选Gartner 2021网络防火墙魔力象限
  20. 平面设计技法技巧之图形设计

热门文章

  1. 记win10下ubantu子系统运行shell脚本的坑
  2. Eclipse ST-Link设置方法
  3. 中兴微型计算机,超乎想象的视觉享受,中兴天机Axon 9 Pro
  4. igl什么缩写_烧失量太大是什么原因
  5. 解决TeamViewer远程连接受阻的方法
  6. Aura Component父子组件通信
  7. linux查看设备和硬盘序列号 ip mac地址
  8. java红包正态分布_红包分配算法
  9. 下载人人网相册的所有图片
  10. HNUCM信息科学与工程学院第二届新生赛——正式赛