6
votes

Comment vérifier si une position de tableau existe?

if (x[4] == True)
    printf("Exists")
else 
   printf("NONE")
c

0 commentaires

4 Réponses :


0
votes

Si la déclaration de tableau est visible, vous pouvez utiliser "Tailleof" et diviser la taille du type de données. Sinon, vous n'avez pas de chance.


1 commentaires

Recommandation dangereuse; Malgré votre mise en garde indiquée, cela va conduire à toute une foule de personnes exécutant taille de sur des pointeurs. Merci!



8
votes

Chaque position dans un tableau C, dans les limites de la matrice, existe toujours, il n'est donc pas nécessaire de vérifier une position aléatoire pour l'existence. Tout ce que vous avez à faire est de vous assurer que l'index est à l'intérieur des limites.

Si le tableau est déclaré avec une taille statique, vous pouvez obtenir la longueur de la matrice via Tailleof code>: P >

void do_something_to(int *items, int item_count);


2 commentaires

Vous n'avez pas remarqué que si vous "passez un tableau" dans une fonction (non, vous n'avez pas!) alors tableau sera juste un pointeur, et ce sera échouer.


Bien mieux, bien qu'un exemple le rendrait cristallin clair. :) Si ce n'est pas déjà évident, c'est une zone que je ressens est très Dangereux pour les nouveaux arrivants de la langue.



1
votes

Vous ne pouvez pas faire ça. Dans C, vous devez stocker la taille de la matrice vous-même après sa déclaration.

C Fonctions qui traitent des tableaux ont généralement un paramètre int ormes utilisé pour spécifier la taille de la matrice afin que la fonction appelée sait avec le nombre d'éléments qu'il doit traiter.


0 commentaires

1
votes

vous ne pouvez pas.

Vous devrez juste vous rappeler (éventuellement en passant un int autour) que le tableau est 3 long.


2 commentaires

En fait, vous pouvez le faire mais vous ne devrait pas le faire . Si vous , faites-le , vous accéderez à un emplacement de mémoire que vous n'avez pas entendu. Autre que cela, le conseil de la longueur est bon.


@ZABBA: Vous pouvez lire cette mémoire, mais vous ne pouvez pas vérifier si cela fait partie de votre tableau (pas de la manière dont le PO demande).