Inicialización de cadenas de caracteres en C

0

Pregunta

He empezado a aprender C y se acaba de enterar de que las cadenas son sólo las matrices de caracteres. Yo quería ver los valores están en las cuerdas en cada momento dado para que yo establezca un punto de interrupción en vscode, un paso a través de la ejecución, y miró a todos los valores.

int main()
{
    char a[4] = "foo";
    char b[4] = "bar";

    return 0;
}

Vi que antes de iniciar el a[] de la matriz, ya hay valores en la memoria. screenshot of vscode while debugging.

Mi pregunta es, ¿cuáles son esos valores? ¿Por qué están ahí? Qué representan?

c
2021-11-24 06:29:21
4

Mejor respuesta

1

Al definir un valor, se toma una parte de la memoria que podría haber contenido a otros números. Se trata básicamente de los números que se muestran en la ficha depurar.

2021-11-24 14:32:02
0

Cuando en primer lugar declarar la matriz o variable, es asignado a la memoria y que la memoria puede contener algunos valores de basura ya, por lo que se imprime de esta manera

Basura valor puede ser cualquier cosa, la lengua estándar no especifica lo que debe ser

2021-11-24 12:55:09
0

La memoria es la memoria, podría ser sin inicializar (aka llena de basura) o puede ser inicializado con los datos.

En su caso, cuando el programa saltó a su función principal de una pila se ha creado para él que contienen sus variables locales (la variable local siendo la matriz de char declarado, básicamente, un puntero a algún lugar en la memoria). Antes de la inicialización de punteros dijo a y b para que apunte a su cadena, que podría haber contenido algún viejo números y así tratar de leer la "cadena" en esa dirección sería darle más basura aleatoria.

Por ejemplo, si usted escribió int a = 5; en su programa, y un paso a través de, usted podría ver del mismo modo que podría contener algunos de números aleatorios antes de asignar 5.

2021-11-24 07:01:48

Lo que yo veo. Pero lo que me parece que no puede entender es ¿por qué no veo los mismos valores cada vez que me depurar el programa?
jon doe
-1

Cuando se crea un nuevo valor como enteros o matrices, el sistema le dará a estos valores como una dirección para guardar sus datos en esa dirección. Hay algunos datos en esa dirección para otras aplicaciones y después del cierre de la aplicación, la memoria RAM no eliminarlos, así que antes de inicializar, verá los datos.

2021-11-24 07:08:54

De propósito general sistemas operativos multiusuario, la memoria de un proceso, nunca contiene los datos de otro proceso, a excepción de los datos que se han compartido. El sistema operativo borra la memoria antes de la reasignación a otro proceso, para los fines de seguridad.
Eric Postpischil

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................