Vous pouvez comparer les pointeurs avec les opérateurs d'égalité (==
ou !=
) qui pointent vers différents objets ou éléments de différents tableaux. Si les pointeurs ne pointent pas sur le même objet, ils sont considérés comme inégaux.
Plus précisément (la norme C, 6.5.9 Opérateurs d'égalité)
6 Deux pointeurs être égaux si et seulement si les deux sont des pointeurs nuls, les deux sont des pointeurs vers le même objet (y compris un pointeur vers un objet et un sous-objet à son début) ou fonction, les deux sont des pointeurs vers un passé le dernier élément du même objet tableau, ou un est un pointeur à un après la fin d'un objet tableau et l'autre est pointeur vers le début d'un objet tableau différent qui arrive à suivre immédiatement le premier objet tableau dans t il adresse l'espace.
Considérons l'exemple suivant.
#include <stdio.h>
int main(void)
{
struct A
{
int x;
int y;
} a;
printf("&a.x + 1 == &a.y is %d\n", &a.x + 1 == &a.y);
return 0;
}
S'il n'y a pas de remplissage entre les membres de données x
et y
de la structure, la sortie sera égale à 1
parce que chaque membre de données peut être considéré comme un tableau avec un élément et la « matrice » y
immédiatement suit le "tableau" x
.
Cependant, vous ne pouvez pas comparer les pointeurs avec les opérateurs relationnels (<
, >
, <=
, >=
) qui ne pointent pas aux éléments du même tableau ou passé la fin du même tableau.
Quel est le message d'erreur. Quel compilateur? –
Il y a un "\" 'errant à la fin de' char name1 [20], name2 [20]; \ '' – Gerhardh
..J'ai pensé que c'était un grain de poussière sur l'affichage :( –