0
votes

Si des déclarations en c avec null

J'ai un programme qui ressemble à ceci comme suit:

int someVal = 5;
int startCol = NULL;
int startRow = NULL;
int destCol = NULL;
int destRow = NULL;
for (int i = 0;i<2;i++){
    if (startCol == NULL){
        startCol = someVal;
    }
    // same for other variables
}


3 commentaires

NULL évalue comme faux. Aussi 0


@Tibrogargan je ne peux pas utiliser 0 ..


@Darkleader: ma solution prendrait une sorte de consommation de temps et il pourrait y avoir une meilleure solution là-bas, mais vous pourriez: - définir une valeur très peu susceptible de se produire (n'aime pas celui-ci trop, mais parfois, il suffit de faire des choses Travail) - Ou, vous pouvez définir toute la variable une chaîne, définissez-les sur NULL si elles sont nulles, vous convertissez les variables en Int qui passe dans la valeur quelqueevale?


3 Réponses :


-1
votes

null est pour les pointeurs.

int s ne sont que des valeurs int et non des références. Vous pouvez les attribuer à null et tester si elles sont null mais null est juste un numéro (si utilisé comme int (Je pense que c'est 0 ).

Si vous l'utilisez comme un pointeur, il indiquera une adresse qui n'est pas disponible (Dréréférence, il provoquera une SEGENV) et vous pouvez l'utiliser afin de ne pas attribuer de données avec elle.


0 commentaires

1
votes

Si vous les utilisez pour les indices, définissez-les sur -1 n'est pas une mauvaise idée.

Ensuite, vous n'aurez que pour vérifier s'ils sont -1 .

null est ((vide *) 0) . C'est un pointeur. Mélange int et le pointeur n'est pas vraiment la meilleure pratique mais produit la sortie souhaitée si elle est bien utilisée.

Si vous utilisez le code de l'extrait, n'est-ce pas une option pour simplement vérifier si i == 0 ?


1 commentaires

Eh bien Non, les chèques ci-dessus sont dans un étui de commutation afin que l'index n'a pas d'importance, mais si une condition de rideau est remplie et que la valeur de la variable n'a pas encore été modifiée.



2
votes

null lorsque vous avez été attribué à l'entier convertit à zéro.

int code> ne possède aucune valeur spéciale qui signifie "non initialisée" ou "aucune valeur". P>

La seule solution de contournement consiste à choisir une valeur entière qui indiquera cette initialisation des besoins variable. Vous pouvez également définir des types de données plus complexes contenant les informations sur l'initialisation nécessaire P>

typedef struct
{
  bool initialized;
  int val;
}myInt_t;

myInt_t x = {.initialized = false};
if (!x.initilaized) x.val = 100;


0 commentaires