C++学习笔记之数据类型(2)数组、向量、指针

C++学习笔记之数据类型(2)数组、向量、指针

自学C++有时总会提不起干劲,搁置几个月后又会忘记之前比较重要的点,因此我开了这个学习笔记系列,希望在自己的学习过程中能督促我自己的学习,同时遇到问题时希望可以借助该系列博客复习、提醒,也希望能帮助一些其他的C++学习者。1.

目录

数组(Arrays)

数组是数目固定的、类型相同的若干个变量的有序集合。数组的元素个数、初始化基本与C语言一致。关于数组的默认值,没有初始化的静态数组(static)中的元素会被清零。而局部数组(即在函数内部定义的数组)的元素值是不确定的。
C++也允许使用二维数组,甚至多维数组。例如三维数组float a[2][3][4];共有 234=24 2 ∗ 3 ∗ 4 = 24 个元素,可以看做是以二维数组为元素的数组。

向量(Vectors)

vector是向量类型,是一种对象实体,有值,可以看作是变量。向量可以容纳许多其他类型的相同实体,比如若干个整数,称其为容器。使用时,需要包含头文件 vector
定义方式可以为:
vector<int> a(10); //定义了10个整数元素的向量,但没有给出初值
vector<char> b(10, 'a'); //顶一个一个10个char型元素的向量,并且每个初值都是‘a’
vector<char> c(b); //通过一个现成的向量b来创建一个新变量c
vector<char> d(b.begin(), b.begin() + 3); //创建一个向量,值为b中的第0个到第2个(共3个)值
int e[7] = { 1, 2, 3, 4, 5, 6, 7 };
vector<int> va(e, e +7); //创建的向量通过数组获得初值

b.begin()b.end()表示向量的起始元素位置和最后一个元素之外的元素位置。向量元素位置也属于一种类型,称为遍历器。遍历器表示元素的位置,也可以在容器内前后挪动。向量中的遍历器类型为vector<int>::iterator。遍历向量中的所有元素的话,可以由下面两种方式:
show me the money!

指针

指针变量就是专门用来存放地址(即指针)的变量。此处要把指针和指针变量区分开。变量的指针就是变量的地址,用来存放变量地址的变量是指针变量。
一个变量的指针有两个要素,一个是变量的地址,另一个是 它指向的数据类型。一个指针变量只能指向同一类型的变量。
当指针指向数组的一个元素时,就可以通过指针的加减快速的遍历完所有的数组元素。如:
int a[10];
int i,*p=a; //使指针变量p指向a[0]
for (i = 0; i < 10; i++)
cin >> *(p+i);
for (p = a; p < (a+10); p++) //p++即指向的元素地址++
cout << *p << " ";
cout << endl;

使用指针可以优化执行的效率。
使用指针访问变量等同于是在间接寻址,我们还可以使用指向指针的指针来实现“二级间址”甚至更高的级数,但实际中很少使用超过“二级间址”的,级数越高的时候,操作和可读性都会越来越差,也更容易出现混乱和错误。
当一个数组的元素都是指针类型数据时,该数组称为指针数组。另外还有const指针(即常量指针)、void指针(即无类型指针)等。但需要注意的是:指针变量可以有空值,即该指针不指向任何变量,但未被赋值的变量是很危险的。
如:int *p;
p=NULL; //NULL在头文件iostream中已经被定义为整数0

如果p未被赋值,它可能指向某一个未知的单元,是很危险的。


  1. 教材:C++程序设计教程(清华大学出版社第二版)。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值