c++ primer 3 数组和指针

类比的思想学习数组和指针,c++提供类似于vector和迭代器的低级复合类型——数组和指针。与vector相似,数组可以保存某一种类型的一组对象;而他们的区别在于,数组的长度固定,数组一经创建就不允许添加新元素。指针则可以像迭代器一样用于遍历和检查数组中的元素

C++应尽量使用vector和迭代器类型,避免使用低级的数组和指针。设计良好的程序只有在抢到速度时才在类实现的内部使用数组和指针

4.1 数组

定义和初始化

数组的位数必须用值大于等于1的常量表达式定义,非const变量以及要到运行阶段才知道其值的const变量不能用于定义数组的维数

  • 在函数体外定义的内置数组,其元素初始化为0;
  • 在函数体内定义的内置数组,其元素无初始化;
  • 不管数组在哪定义,如果其元素为类类型,则自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则需要提供显示初始化

显示初始化的数组不需要指定数组的维数值,编译器会根据列出的元素个数来确定数组的长度

int a[] = {1,2,3};

不允许数组直接复制或赋值,数组一经定义就不允许再添加新元素

在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t

字符数组

char ca1[] = {‘a‘, ‘b‘, ‘c‘, ‘\0‘} ; // 一个C风格的字符串,等价于 char ca2[] = "abc" 二者的字符数组大小都是4

char ca2 = "abc";

要注意:虽然char ca2[] = "abc" 内容只有三个字符,由于这种定义是C风格字符串的定义法所以系统会自动在对应的字符数组后面加上 ‘\0‘

时间: 2024-10-05 02:31:58

c++ primer 3 数组和指针的相关文章

[c++primer][04]数组和指针

现代C++程序应尽量使用vector和迭代器类型,而避免使用低级的数组和指针.设计良好的程序只有在强调速度时才在类实现的内部使用数组和指针. 4.1 数组 数组的维数必须用值大于等于1的常量表达式定义.非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数. 初始化 如果没有显式提供元素初值,数组元素与变量初始化规则一致. 字符串字面值包含一个额外额空字符(null)用于结束字符串 const char ch[6] = “Daniel” ; //error: Dani

《C++ Primer 4th》读书笔记 第4章-数组和指针

原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3911573.html <C++ Primer 4th>读书笔记 第4章-数组和指针

把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另一个vector,也是将一个vector 的元素逐个赋值给另一vector 的对应元素: //将一个vector 赋值给另一vector,使用迭代器访问vector 中的元素 vector<int> ivec(10, 20); vector<int> ivec1; for (vecto

C++ Primer 第四版读书笔记(三)之数组与指针

C++语言提供了两种类似于vector和迭代器类型的低级复合类型--数组与指针.与vector类型相似,数组也可以保存某种类型的一组对象:而它们的区别在于,数组的长度是固定的.数组一经创建,就不允许添加新的元素.指针则可以像迭代器一样用于遍历和检查数组中的元素. 现代C++程序应尽量使用vector和迭代器类型,而避免使用低级的数组和指针.设计良好的程序只有在强调速度时才在类实现的内部使用数组和指针. 数组是C++语言中类似于标准库vector类型的内置数据结构.与vector类似,数组也是一种

C++ Primer快速入门之六:数组和指针

更新:勘误,delete [] 猪 我们知道,C语言以及早期的面向结构的语言几乎都支持数组定义,比如整形数组int 女神[2],表示有俩数: 女神[0], 女神[1],她们都是整数.C++ 语言为了效率和兼容考虑,也支持这个.当然了,毕竟是别人家的孩子(标准),并不提供类似于 vector 和迭代器类型那些神奇的能力.与 vector的区别在于,数组的长度是固定的.另外呢,指 针还是那个指针,没有变化. ? 我们编程时候,尽量使用 vector,避免使用数组和指针.有了vector和她的iter

C++primer第四章 数组和指针

4.1. 数组 数组是由类型名.标识符和维数组成的复合数据类型(第 2.5 节),类型名规定了存放在数组中的元素的类型,而维数则指定数组中包含的元素个数. 数组定义中的类型名可以是内置数据类型或类类型:除引用之外,数组元素的类型还可以是任意的复合类型.没有所有元素都是引用的数组. 4.1.1. 数组的定义和初始化 数组的维数必须用值大于等于 1 的常量表达式定义(第 2.7 节). 此常量表达式只能包含整型字面值常量.枚举常量(第 2.7 节)或者用常量表达式初始化的整型 const 对象. /

《C++ Primer》学习 之 返回数组的引用(返回数组的指针,方法与之相同)

/* 返回数组的引用(返回数组的指针,方法与之相同) 共四种方法(在下面示例程序中,调用其中一种方法时,需要将其他三种方法注释掉)*/ 1 #define _CRT_SECURE_NO_WARNINGS 2 #define HOME 3 #include <iostream> 4 #include <stdexcept> 5 #include <ctype.h> 6 #include <locale> 7 #include <iterator>

C Primer Plus (第五版) 第十章 数组和指针 编程练习

第十章 数组和指针 编程练习 1.修改程序清单10.7中的程序rain,使它不使用数组下标,而是使用指针进行计算(程序中仍然需要声明并初始化数组). # include <stdio.h> # define MONTHS 12 # define YEARS 5 int main(void) { //把数组初始化为2000年到2004年的降水量数据 const float rain[YEARS][MONTHS] = { { 4.3, 4.3, 4.3, 3.0, 2.0, 1.2, 0.2, 0

C++ Primer高速入门之六:数组和指针

更新:勘误,delete [] 猪 我们知道,C语言以及早期的面向结构的语言差点儿都支持数组定义.比方整形数组int 女神[2].表示有俩数: 女神[0], 女神[1].她们都是整数. C++ 语言为了效率和兼容考虑,也支持这个. 当然了,毕竟是别人家的孩子(标准).并不提供类似于 vector 和迭代器类型那些奇妙的能力.与 vector的差别在于.数组的长度是固定的.另外呢,指 针还是那个指针,没有变化. ? 我们编程时候.尽量使用 vector,避免使用数组和指针.有了vector和她的i