C++ 数组、字符串、指针之间联系详解

数组

1、定义
存储多个同类型的值。

int a[5];——是int数组,而不是数组
5——整型常数、const值(变量)、常量表达式

const int n = 5;
char a[n] = { "asd" };
cout << a;

2、初始化

定义数组时,才能初始化。
两种方式:

  1. 列表{} ,对于字符串可以不用{}
  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值