J'ai déclaré un tableau de longueur N (supposé). Maintenant, j'attribue des valeurs aux éléments de ce tableau en utilisant une boucle (la variable loop est utilisée comme index du tableau). Le code est comme suit:La variable de boucle d'index de tableau est remise à zéro dans C, C++
int main()
{
int arr[4], j;
for(j=0; j<10; j++)
{
printf("%d\n", j);
arr[j] = 0;
sleep(1);
printf("%d\n\n", j);
}
return 0;
}
Je pensais que la sortie soit 0 1 2 .. 9. Mais ce qui est arrivé est que j obtenu remis à 0 lorsque l'affectation arr [N + 2] = 0 (arr [ 6] = 0, dans ce cas) a été exécuté dans la boucle. Qu'est-ce qui se passe réellement ici? Est-ce que je manque quelque chose?
Que voulez-vous dire par piétinement ici? – nitzs
Vous l'avez maintenant. Merci. – nitzs
J'ai mis à jour la réponse. Fondamentalement, arr [N] est la même chose que d'ajouter N au pointeur au début du tableau et de déréférencer la mémoire. Il ne se soucie pas si la longueur de l'arr est plus petite - c'est à vous de vérifier. Dès que vous affectez un élément de tableau hors limites, vous écrasez la mémoire - tous les paris sont désactivés maintenant. Le programme peut s'écraser, lancer des missiles, réinitialiser j, augmenter les niveaux de rayonnement, faire tourner des centrifugeuses hors de contrôle, etc. –