Diferencia entre las declaraciones Char s [] y char * s en C

En este artículo vamos a aprender el diferencia entre dos métodos de declaración de cadena, usando la matriz y puntero en lenguaje C .

La cadena en C puede ser declarada de dos maneras. Utilizando los literales de matriz y otro es el uso de los punteros. Vamos a discutir las principales diferencias entre los dos y cuáles son las distintas aplicaciones en tiempo de ejecución y tiempo de compilación. Aquí hay un código que muestra el tanto en la declaración.

Código

//Using Array literal
char str[] = "Include Help";
//Using Pointers
char *str = "Include Help";

La declaración anterior, que es la declaración con arreglo literal, crea un objeto, una matriz char de tamaño 13, llamado str , inicializado con los valores ‘I’, ‘n’ , ‘c’, ‘l’, ‘u’, ‘d’, ‘e’, ​​”, ‘H’ ‘e’, ​​’l’, ‘p’, ‘ 0’ .

Esta matriz se asigna en la memoria y del tiempo de vida depende del lugar donde aparece la declaración. Si la declaración se encuentra dentro de una función, se va a vivir hasta el final del bloque que se declara en, y es casi seguro que se asignará a la pila. Pero si es fuera de una función, es probable que se almacena dentro de un “segmento de datos inicializado” que se carga desde el archivo ejecutable en la memoria se puede escribir cuando se ejecuta el programa.

Esta última declaración, que es la declaración utilizando los punteros, se crean dos objetos. Una matriz de sólo lectura de 13 caracteres (similar al método literal de Array), que no tiene nombre y tiene una duración de almacenamiento static (es decir, que vive durante toda la vida del programa) y otra variable puntero de tipo char puntero a punto, llamado str, que se inicializa con la ubicación del primer carácter en esa gama de sólo lectura sin nombre,.

En otras palabras, utilizando el método literal de matriz, que pone la cadena literal en la memoria de sólo lectura y copia la cadena a la memoria recién asignada en la pila y utilizando el método del puntero se colocará “Include de ayuda” en la lectura sólo algunas partes de la memoria, y haciendo que el indicador sa a que hace que cualquier operación de escritura en esta memoria ilegal.

Si te gusta el artículo, por favor, comparta sus comentarios a continuación.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *