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)。

扫描二维码关注公众号,回复: 12966119 查看本文章

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

猜你喜欢

转载自blog.csdn.net/qq_43641765/article/details/111455424