[深蓝学院] C++ Week 3: 数组

本文详细探讨了C++中的数组,包括初始化、元素访问、数组到指针的转换,以及C字符串和多维数组。同时,介绍了Vector的易用性和灵活性,以及String的使用。强调了数组与Vector的差异,以及数组大小不可变和不支持复制的原因。
摘要由CSDN通过智能技术生成

本文是深蓝学院c++课程的个人笔记和感悟,仅供学习参考。

1. 数组

1.1 数组初始化

1.1.1 可变长度的数组?

  • c++里面数组的初始化一般来说必须给定一个确切的大小,比如int b[3]
  • 如果用variable length的数组,比如int b[x],原则上是不可以的。
    因为系统在编译(compile)的时候没办法知道x这个变量是多少,那就没办法分配内存空间; 只有在运行(run)的时候才可能知道x是多少。

1.1.2 缺省值

  • 在main函数里面的缺省值是随机的。
  • 在main函数外面的全局定义的数组,则全部初始为0。
#include <iostream>

int b[3];
int main() {
   
    int a[3];

    std::cout << a[0] << std::endl;
    std::cout << b[0] << std::endl;

    return 0;
}

---result----
a[0]: 21919 (random)
b[0]: 0

1.1.3 聚合初始化

  • 如果3个长度的数组,只给它2个数值: int a[3] = {1,2}。那么a[3]自动初始化为0

1.1.4 不能用auto来声明数组类型

auto a = {1,2,3}中a的类型其实是std::initializer_list[3]

1.1.5 数组不能复制

c++不支持数组直接复制:

int a[] = {
   1,2,3}
int b = a; // X,错误!

问:为神马c++不支持数组的复制呢?
答:因为c++是一种注重性能的语言,复制得开辟好多空间喔~

1.1.6 字符串的初始化

char str[] = "hello" // char[6]
char str[] = "h", "e", "l", "l", "o" // char[5]

神奇!为神马第二种方式的str变量变成char[5],而第一个是char[6]呢?
原因: c/c+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值