本文是深蓝学院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+