| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> c++ primer plus 第四章复合类型 -> 正文阅读 |
|
[C++知识库]c++ primer plus 第四章复合类型 |
4、1数组数组能够存储多个同类型的值,计算机在内存中一次存储数组的各个元素。 数组的声明 1、存储值的类型 2、数组名 3、数组中的个数 int moths[12]; 创建了一个名为moths的数组,该数组有12个元素,每个元素存储一个int类型的值 使用下标或者索引来对元素进行访问 从0开始。 编译器并不会检查下标是否有效。 数组初始化: int a[4] = {0,1,2,3}; int b[4]; 4、2字符串字符串是存储在内存中的连续字节中的一系列字符。 char cat[3] = {‘c’,‘a’,‘t’,'\0'}; char数组的字符串必须有空字符(\0) 打印的时候遇到空字符停止 另一种将字符数组转化为字符串的方法,只需要使用一个引号括起来的字符串 char cat[3] = "cat"; char cat[]="cat"; 用引号括起来的字符串结尾隐式的的包含空字符 c语言库函数strlen(来确定字符串长度) 用sizeof来判断多少字节 4、3程序
会发现我们还没有输入甜点的程序就把他显示出来了。然后立即显示最后一行。 cin是如何确定已完成字符串的输入呢? 由于不能通过键盘输入空字符,因此cin使用(空格、制表符和换行符)来确定字符串的结束为止。 这意味着cin在获取字符输入输入时只读取一个单词。读取该单词后cin将在该字符串放到数组中,并自动在结尾天界空字符。 这个例子就是,cin把zhagn作为第一个字符,放到name数组中,把san留在输入队列中,当cin再输入队列搜索用户喜欢的甜点的时,他发现了san,因此cin读取三放入了dessert数组中。 4、2、4每次读取一行字符 isteam中的类提供了一些面向行的类成员函数: geilin() 和? get() 这个两个函数都读取一行的输入知道到达换行符。 getline()将丢弃换行符 get()将换行符保留在队列中 1、getline() 用cin.getline()来调用 该函数有两个参数 一个是数组名 一个是字符数,默认输入字符数-1,因为要留一个给空字符 读取到指定数目或者遇见换行符停止读取。 假设: 使用getline()将姓名读入一个包含20个元素的name数组中 cin.getline(name,20) 实际读取19个,有一个留给空字符 2、get() 不丢弃换行符 当我连续两次调用get()的时候,会发现第二次调用看到的是换行符,因为第一次调用默认把换行符留在了队列中。 可以这样更改 cin.get(name,10) cin.get() cin.get(dessert,10) 4、4string类简介用string类型的变量 而不是字符数组来存储字符串 要使用string类型必须头文件包含头文件string string对象声明为简单的变量而不是数组 string str; string str2 = “hahah”; string可以用+把两个字符串连接起来。 string str1; string str2; string str3? = str1 + str2 使用strcpy(a,b)将字符串复制到数组中? ?复制b到a 使用strcat(a,b)将字符串加到字符末尾? ?把b添加到a末尾 确定字符串中字符数的方法: int len1 = str1.size(); int len2 = strlen(charr; 4、4结构简介结构可以存储多种类型的数据 strut a? { char name[20]; float volume; double price; } a是结构体的名 a结构有个三个成员 创建结构体变量 a hat; a hah; a? hello; 由于hat的类型是a,所以可以使用成员运算符来访问各个成员。hat.volume指的是结构的volume成员 初始化: a haha= { "glorious", 1.99, 29.99 }; 用逗号隔开 4、5共用体: 是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。 结构可以同时存储int ,float 共用体只能存储int或float或double; union a { int haha; long long_hah; double double_val; }; a pail; pail.haha = 15; pail.double_val = 1.38; 共用体每次只能存储一个值。 4、6枚举 enum提供了另一种创建符号常量的方式。可以代替const enum a {red,orange,yellow,green}; a成为新类型的名称 a被称为枚举 将red等作为符号常量他们对应的值是0-7,这些常量叫做枚举量 默认将整数值赋给枚举量,第一个是0第二个是1。 设置枚举量 enum bits {one = 1,two = 2,four = 4,eight = 8}; 值必须为整数 enum B {a , b = 100 ,d} 其中a=0, d = 101 4、7指针和自由存储空间指针是一个变量,存储的是地址 取值运算符& 取值运算符* home是一个变量,则&home就是他的地址 oop强调的是运行阶段进行决策 指针声明 指针声明必须指定指针指向的数据的类型 int *p; *p的类型是int p指向int类型 p的类型是指向int的指针 p是指针 *p是int 指针的危险: c++中创建指针的时候,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。 int *p; *p = 224; 是不对的。 指针描述的是位置 要将数组织作为地址来使用要强制类型转换: int *p; p? = (int *) 0xb80000; 用new来分配内存 int *p = new int; new找到一个长度正确的内存块,并返回内存块的地址。 在运行阶段为一个int值分配未命名的内存,并使用指针来访问这个值。 new int 告诉程度,找一个适合存储int的内存。 使用delete来释放内存 当使用完内存后用delete来释放他。 int *p = new int; ... delete p; 释放内存但并不删除p本身。 使用new来创建动态数组 假设编写一个程序,他是否需要数组取决于运行时用户提供的信息。 使用new就可以在运行阶段创建一个数组。程序将在运行时确定数组的长度。 int *p = new int[10]; 创建包含10个int类型的数组。 释放: delete [] p; p指向了10个int值内存块的第一个元素 假设int占4个字节 往后移动四个字节就是指向第2个元素 *p就是第一个元素的值。 p +1是第二元素的地址 4、8指针、数组和指针算数 将指针变量+1,增加的量等于它指向的类型的字节数。 int wage[3] = {1,2,3}; int * p = wage; wage = &wage[0]; 使用new创建动态结构: inflatable *p = new Inflatable; 把足以储存inflatable结构的一块可用内存的地址赋值为p。 创建动态结构时,不用使用成员运算符访问。 要用->访问 4、10数组的替代品vector和array是数组的替代品 1、模板类vector 模板类vector类似于string类。是一种动态数组 可以再运行阶段设置cector对象的长度。可在末尾附加数据,还可以在中间插入数据。 使用vector对象必须包含头文件vector
vi是一个vector<int>对象 vd是一个vector<double>对象 vi的初始长度是0 vn的初始初始长度是n 模板类array vector类功能比数组强大,但效率低。如果需要固定长度的数组,使用数组是更加的选择、 array长度是固定的 arry对象的创建
4、12复习题: 1、 a: 2、 array<char, 30> actor; 3、int array[5] = {1,3,5,7,9}; 4、int even = array[0] + array[5]; 5.cout << ideas[1]<<endl; 6.char ch[12]= "cheeseburger"; 7.string str="waldorf salad"; 8.strut fish { char name[20]; int weight; float length; } 9.fish a ={"yuu",10,2.2}; 10.enum response {no ,yes,maybe}; 11.double ted = 10; int *p = &ted; 12.float treacle[10]; float *p = treacle; 13. int num ; cin >> num; int *p = new int[num]; vector<int> pt(num); 14.valiable,print string's address. won't print string "Home of jolly bytes" 15. struct fish fish *pt = new fish; 16.cin >> address; >> read from input until it comes a blank 17. #include <string> const int size = 10; 4.13编程练习? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:11:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |