Je n'ai trouvé aucune réponse dans aucune des questions posées. Je passe un Integer Array à une fonction.Maintenant je veux traverser le tableau.Mais comme les choses ont fonctionné en C, C++ en utilisant simplement arrayname.length qui a donné le nombre d'éléments dans le tableau. Quel est le moyen de trouver cela? [NSArrayObject length] fonctionne pour le type NSArray mais je le veux pour int []. pas même [nombre XYZ] fonctionne .... alors, vous voulez une autre façon de le découvrir.Longueur d'un tableau dans l'objectif C
Répondre
Il n'y a rien de spécifique à Objective-C avec un tableau d'ints. Vous devez utiliser la même technique que si vous utilisiez C.
sz = (sizeof foo)/(sizeof foo[0]);
Huh? En C, il n'y a pas de "arrayname.length". Un tableau d'un type primitif, tel que int[]
, n'a aucune information de longueur qui lui est associée au moment de l'exécution.
Il n'y a pas une telle chose comme array.length
en C. Un int tableau dans Objective-C est exactement la même comme un tableau int en C. Si elle est définie de façon statique comme int foo[5]
, vous pouvez le faire sizeof(foo)
pour obtenir la taille - mais seulement dans la même fonction foo
est défini dans (pour d'autres fonctions, c'est juste un pointeur int, pas un tableau en soi). Sinon, il n'y a aucun moyen inhérent d'obtenir cette information. Vous devez soit faire passer la taille ou utiliser des valeurs sentinelles (comme la terminaison '\ 0' dans les chaînes C, qui sont juste des tableaux de char).
Je cherche numéro c.-à-longueur éléments dans un tableau d'entiers. et pas sizeof.as wen id o sizeof il me renvoie simplement le sizeof int – Darpan
Comme je l'ai dit, ne peut pas faire. 'sizeof()' fonctionne pour des tableaux de taille statiques comme l'exemple que j'ai donné plus haut dans la même fonction que celle dans laquelle ils sont définis. C'est le C le plus proche qui vient à l'appui. – Chuck
Un tableau est fondamentalement juste une adresse mémoire au début d'un bloc de mémoire qui a été allouée pour le tableau. Pour l'utiliser réellement, vous devez vous souvenir de la longueur après sa création. Vous pouvez soit passer la longueur à chaque fonction, ou envelopper le tableau et la longueur dans une autre structure, en passant cette structure autour.
ressemble à un travail pour NSMutableArray
. Y at-il une raison pour laquelle vous avez besoin de travailler avec un tableau C? si ce n'est pas le cas, considérez NSMutableArray
. Je peux me tromper (alors s'il vous plaît corrigez-moi si je suis), mais il n'y a pas moyen facile en C pour obtenir la taille de int [] à l'exécution. vous devriez faire quelque chose comme créer une structure pour contenir votre tableau et un int où vous pouvez garder une trace du nombre d'éléments dans votre tableau vous-même.
Encore plus fantaisiste, vous pouvez faire en sorte que votre struct maintienne votre tableau et un bloc. alors vous pouvez concevoir le bloc pour faire le suivi pour vous.
mais c'est plus une question C, pas une question d'objectif-c.
Si vous voulez un tableau d'entiers, enveloppez-les dans des objets NSNumber et placez-les dans un NSArray.
Ce que vous demandez de faire, ne sont pas vraiment bien soutenu dans C mais il existe une méthode sur le mac, vous pouvez essayer (malloc_size):
Il n'y a pas une telle chose comme arrayname.length
dans C. C'est pourquoi tant de fonctions prennent des paires d'arguments, un argument avec le tableau et un argument avec la longueur du tableau. Le cas le plus évident est la fonction principale.Vous pouvez trouver cette fonction est tous vos projets iPhone dans un fichier nommé main.m
, il ressemblera à quelque chose comme ceci:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Remarquez comment le argv
argument passé est un v ecteur, ou tableau de chaînes, et le argc
argument est un c ount du nombre d'éléments qui sont dans ce tableau.
Vous devrez faire la même chose pour tous les types primitifs, ceci est la partie C d'Objective-C. Si vous restez dans les pièces Objectif en utilisant NSArray ou les sous-classes fonctionne très bien, mais nécessite que tous les éléments soient des objets.
ce code peut être utilisé lorsque le nombre total d'éléments dans le tableau n'est pas connu.
main()
{
int a[]={1,2,3,4,5,6,7}
int i;
clrscr();
for (i=0;i<=((sizeof(a)/sizeof(int));i++)
{
puts(a[i]);
}
getch();
}
[count tableau]
4 espaces avant qu'une ligne de texte indique au site d'utiliser le formatage du code. Pour mettre rapidement 4 espaces devant plusieurs lignes de code, sélectionnez toutes les lignes et cliquez sur le bouton ** {} **. Je l'ai arrangé pour vous, pour le rendre lisible. –
cela semble travailler le plus facile à Objective-C
Vous pouvez utiliser [count XYZ] pour obtenir la longueur du tableau
La question concerne le tableau C, où il n'y a pas de sélecteur de compte. – Vive
- 1. Tableau de longueur
- 2. longueur de calcul du tableau
- 3. Créer un tableau d'objet C# de longueur indéfinie?
- 4. Quelle est la meilleure façon d'initialiser un tableau sur un tableau de longueur fixe? (C++/CLI)
- 5. Quota maximal de longueur de tableau
- 6. Utilisation du tableau de longueur nulle
- 7. Comment trouver la longueur d'un tableau associatif dans ActionScript 3.0?
- 8. Comment vérifier la longueur d'une entrée? (C++)
- 9. PHP: Trier un tableau par la longueur de ses valeurs?
- 10. Code de hachage numérique de longueur fixe à partir d'une chaîne de longueur variable dans C#
- 11. Une méthode générique pour définir la longueur d'un tableau dynamique de type arbitraire en C++
- 12. Tableau croisé dynamique dans C#
- 13. Comment obtenir la longueur de IStream? C++
- 14. pour la boucle dans le tableau primitif objectif-c -
- 15. Trouver la longueur MP3 en C#
- 16. Trouver longueur Array incakephp
- 17. Tableau UI C#
- 18. Initialisation de tableau dans C++ géré
- 19. Obtenir dans IE la longueur d'un tableau Java passé d'une applet à son Javascript wrapper
- 20. Longueur arbitraire entier dans Ada
- 21. tableau C adresse confusion
- 22. manipulation de champs dans un tableau de bits en C++
- 23. Nodesets Longueur
- 24. Récupération d'un tableau d'octets de longueur inconnue à partir du magasin Java
- 25. C# Copier tableau par valeur
- 26. C++ initialisation classe tableau instance
- 27. objectif tableau d'index retourner c
- 28. Chaînes de longueur fixe ou structures en C#
- 29. contenu Parse de tableau C++
- 30. Comment convertir un tableau ruby en tableau C avec RubyInline?
J'ai essayé ceci ... j'ai vu dis pour un tableau bidimensionnel mais mon tableau est une dimension simple ... juste comme int foo [] alors wen je fais sizeof (foo)/sizeof (foo [0]) il retourne 4/4 ie 1 ..j'ai déjà essayé ... mais pas de chance..il existe un autre moyen? Merci – Darpan
@Darpan: Cela ne fonctionne que lorsque vous déclarez int foo [5], pas int foo []. – mouviciel
acceptez w/mouviciel, cela ne sera pas ce que vous voulez. – pxl