L'initialisation des chaînes de caractères en C

0

La question

J'ai commencé à apprendre le C et le tout juste d'apprendre que les chaînes de caractères sont simplement des tableaux de caractères. Je voulais voir les valeurs sont dans les cordes à chaque moment donné, j'ai donc mis un point d'arrêt dans vscode, est intervenu par le biais de l'exécution, et regardé toutes les valeurs.

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

    return 0;
}

J'ai vu qu'avant l'initialisation de l' a[] tableau, il y a déjà des valeurs en mémoire. screenshot of vscode while debugging.

Ma question est, quelles sont ces valeurs? Pourquoi sont-ils là? Que représentent-ils?

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

La meilleure réponse

1

Lors de la définition d'une valeur, il prend une partie de la mémoire qui pourrait contenir d'autres numéros. C'est donc essentiellement sur les numéros affichés dans votre onglet débogage.

2021-11-24 14:32:02
0

Lorsque vous d'abord déclarer tableau ou variable, il est affecté de la mémoire et cette mémoire peut contenir des ordures valeurs déjà, de sorte qu'il imprime comme ça

La valeur d'ordures peut être n'importe quoi, la langue standard ne précise pas ce qu'il devrait être

2021-11-24 12:55:09
0

La mémoire est la mémoire, il pourrait être initialisée (aka rempli de déchets) ou il pourrait être initialisé avec les données.

Dans votre cas, si votre programme a bondi à votre fonction principale d'une pile a été créé pour cela que devrait contenir votre des variables locales (local variable étant le char tableau, vous avez déclaré, en fait un pointeur vers un lieu de mémoire). Avant de vous initialisé dit pointeurs a et b à point à votre chaîne, ils auraient pu contenir n'importe quel vieux numéros et donc d'essayer de lire la "chaîne" à cette adresse serait de vous donner plus aléatoire d'ordures.

Par exemple, si vous avez écrit int a = 5; dans votre programme d'escalier et à travers, vous avez également de voir que peut contenir un certain nombre aléatoire avant de vous l'attribuer 5.

2021-11-24 07:01:48

Je vois. Mais la chose que je n'arrive pas à comprendre, c'est pourquoi je vois les mêmes valeurs à chaque fois que je déboguer le programme?
jon doe
-1

Lorsque vous créez une nouvelle valeur comme des entiers ou des tableaux, le système va donner à ces valeurs une adresse pour l'enregistrement de ses données sur cette adresse. Il pourrait y avoir quelques données sur cette adresse pour d'autres applications et après la fermeture de la demande, de la RAM de ne pas les supprimer, donc avant l'initialisation, vous pourrez consulter ces données.

2021-11-24 07:08:54

À usage général systèmes d'exploitation multi -, la mémoire d'un processus ne contient des données à partir d'un autre processus, sauf pour les données qui sont délibérément partagé. Le système d'exploitation efface la mémoire avant de réaffectation à un autre processus, pour des raisons de sécurité.
Eric Postpischil

Dans d'autres langues

Cette page est dans d'autres langues

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