数组
1、定义
存储多个同类型的值。
int a[5];——是int数组,而不是数组
5——整型常数、const值(变量)、常量表达式
const int n = 5;
char a[n] = { "asd" };
cout << a;
2、初始化
定义数组时,才能初始化。
两种方式:
- 列表{} ,对于字符串可以不用{}
- 下标赋值
//列表
int a[10] = {1,2,3};
//字符
char a[] = "asd asd";
//下标赋值
int a[5] = 4;
特殊情况
int a[10] = {1,2,3};//剩余默认初始化为0
int b[5] = {0};//全零的数组
3、注意
编译器不会检查下标是否有效,有问题不会报错
4、 数组分类
字符型数组——char数组
//以字符的形式初始化——数组
char str[10] = { '1','2' };//12
//以字符串的形式初始化——不仅是数组,更是字符串
char str_array[10] = {"jiang"};//jiang,可以不加{}
非字符型数组——int、double数组等
1 int a[10]={1,2,3};
2 cout << a <<endl ; //按16进制输出a的值(地址
字符串
1、定义
内存的连续字节中的字符。
(连续字节就可以, 不用在字节里面也要是连续的)
a、字符——【(字母、数字、标点和空白字符)】
b、字符串中的空格算一个字符。
空白字符:空格、(TAB)和回车(Enter)。
2、C++处理字符串的方式
char数组(其他的非字符型数组不行)
string类
数组与字符串
1、联系
内存中连续字节的字符,意味着可以,以char数组的形式存储。
【非字符型数组(int类型)无法存储,因为不是字符串】
非字符型数组——不加引号
是数组,但不是字符串
int a[10]={1,2,3};
字符型数组——单引号或者双引号
char str[10] = { '1','2' };//12——char数组但不是字符串
char str_2[10] = { '1','2','\0' };//12——字符串
char str_3[10] = {"sdf"};//字符串常量
char a[] = "asd asd";//字符串常量另一种表达形式
2、char数组处理字符串的两种形式
//没有'\0',就仅仅是char数组
char a[10] = {'a','b','\0'};//字符串
//主流表示法,自动补充\0
char b[10] = {"ab"};//字符串常量(和上面不一样)
char c[10] = "ab";//字符串常量
字符串和指针
每个字符串在内存中都占用一段连续的存储空间,并有唯一确定的首地址。
(内存中连续字节的字符,并且有唯一的首地址)
1、字符指针
将字符串的首地址赋值给字符指针,可让字符指针指向一个字符串。
char *ptr = "Hello";
数组和指针
数组的变量名就是数组的首地址
p = &p[0]
p[0] = *p