Explicación detallada de la conexión entre matrices, cadenas y punteros de C ++

Formación

1. Definición
Almacene varios valores del mismo tipo.

int a [5]; - es una matriz int, no una matriz
Constante de 5 enteros, valor constante (variable), expresión constante

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

2. Inicialización

Se puede inicializar cuando se define la matriz.
Dos caminos:

  1. Lista {}, puede usar {} para cadenas
  2. Asignación de subíndice
//列表
int a[10] = {
    
    1,2,3};
//字符
char a[] = "asd asd";
//下标赋值
int a[5] = 4;

Caso especial

int a[10] = {
    
    1,2,3};//剩余默认初始化为0
int b[5] = {
    
    0};//全零的数组

3. Tenga en cuenta que el
compilador no comprobará si el subíndice es válido y no informará de un error si hay un problema.

4. Clasificación de matrices

Matriz de caracteres de matriz de caracteres

//以字符的形式初始化——数组
char str[10] = {
    
     '1','2' };//12
//以字符串的形式初始化——不仅是数组,更是字符串
char str_array[10] = {
    
    "jiang"};//jiang,可以不加{}

Array-int sin caracteres, arreglo doble, etc.

1 int a[10]={
    
    1,2,3};
2 cout << a <<endl ; //按16进制输出a的值(地址

Cuerda

1. Defina
caracteres en bytes consecutivos de memoria.
(Los bytes consecutivos están bien, no es necesario que sean contiguos en bytes)

a. Caracteres - [(letras, números, puntuación y caracteres en blanco)]
b. Un espacio en la cadena se cuenta como un carácter.
Caracteres en blanco: espacio, (TAB) y retorno de carro (Enter).

2. La forma en que C ++ maneja las cadenas es una
matriz de caracteres (no se aceptan otras matrices que no sean de caracteres)
clase de cadena

Matriz y cadena

1. Conecte
los caracteres de bytes consecutivos en la memoria, lo que significa que pueden almacenarse en forma de matriz de caracteres .
[La matriz sin caracteres (tipo int) no se puede almacenar porque no es una cadena]

Matriz sin caracteres, sin comillas Es
una matriz, pero no una cadena

 int a[10]={
    
    1,2,3};

Matriz de caracteres: comillas simples o comillas dobles

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. Dos formas de cadena de procesamiento de matriz de caracteres

//没有'\0',就仅仅是char数组
char a[10] = {
    
    'a','b','\0'};//字符串
//主流表示法,自动补充\0
char b[10] = {
    
    "ab"};//字符串常量(和上面不一样)
char c[10] = "ab";//字符串常量

Cadenas y punteros

Cada cadena ocupa un espacio de almacenamiento continuo en la memoria y tiene una primera dirección determinada de forma única.
(Caracteres de bytes consecutivos en la memoria, y tienen una primera dirección única)

1. Puntero de caracteres
Asigne la primera dirección de la cadena de caracteres al puntero de caracteres, lo que puede hacer que el puntero de caracteres apunte a una cadena de caracteres .

char *ptr = "Hello";

Matrices y punteros

El nombre de la variable de la matriz es la primera dirección de la matriz.

p = &p[0]

p[0] = *p

Supongo que te gusta

Origin blog.csdn.net/qq_43641765/article/details/111455424
Recomendado
Clasificación