disponibles en vérifiant si la valeur NULL a été renvoyé il ya un problème ici:. Lorsque vous ajoutez un élément en utilisant les crochets et tableau pointeur comme on le voit ci-dessus, le pointeur est pas incrémenté Vous avez pour incrémenter le pointeur d'un certain nombre de fois jusqu'à ce qu'il pointe à l'élément ajouté, avant que vous pouvez l'utiliser pour vérifier si la valeur retournée est NULL. Le code suivant illustre cela pour un tableau dynamique int.
#include using namespace std; int main () {int * listPtr = new int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //ajouter nouvel élément. listPtr [5] = 5; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; si (listPtr == NULL) {cout} --listPtr; --listPtr; --listPtr; --listPtr; --listPtr; return 0; } Vous devez diminuer le pointeur, le même nombre de fois que vous incrémenté il.
Si vous ne diminue pas, l'index dans les crochets pour le pointeur ne sera plus refléter leur valeur prévue (original); sous cette condition, le pointeur avec l'indice ne reviendra pas la valeur correcte. Lire le code ci-dessus si vous ne l'avez pas fait (essayer). Il ya encore un problème: Supposons que le nouvel élément n'a pas pu être ajouté car son pointeur serait pointer vers une position de mémoire qui a déjà été adoptée par certains autres inconnue de l'objet pour nous.
Dans ce cas, lorsque vous incrémenter le pointeur le nombre de fois qu'il serait toujours pointer vers une adresse qui existent qui ne sont pas NULL. Dans ce cas, la si-chèque avec NULL va nous dire que l'adresse existe, mais l'adresse ne serait pas notre élément (et sa valeur). Ceci est une conclusion erronée.
Un meilleur test est la suivante: si (* listPtr = 5!) {Cout} Dans le cas condition, nous déréférence le pointeur sur la position de la mémoire de l'objet ajouté supposée et nous voyons si la valeur retournée est la même que la valeur nous avons envoy