Länge eines `int`-Arrays in Objective C

Lesezeit: 3 Minuten

Benutzeravatar von Darpan
Darpan

Ich übergebe ein Integer-Array an eine Funktion. Als nächstes möchte ich das Array durchlaufen. In C und C++ funktionierte dies einfach mit arrayname.length was die Anzahl der Elemente im Array ergab. Wie findet man das in Objective-C?

[NSArrayObject length] funktioniert für NSArray Typ, aber ich will es für int[]. Nicht mal [XYZ count] funktioniert (eine bereits vorgeschlagene Antwort), also suche ich hier nach einem anderen Weg.

Sie können verwenden [XYZ count] um die Länge des Arrays zu erhalten

  • Die Frage bezieht sich auf das C-Array, bei dem es keinen Zählselektor gibt.

    – Nat

    2. Juni 2015 um 12:49 Uhr

Benutzeravatar von Andy Gaskell
Andy Gaskel

Es gibt nichts Spezifisches für Objective-C mit einem Array von Ints. Sie würden die gleiche Technik verwenden, als ob Sie C verwenden würden.

sz = (sizeof foo) / (sizeof foo[0]);

  • Ich habe das versucht … ich habe dies für ein zweidimensionales Array gesehen, aber mein Array ist eindimensional … wie nur int foo[] Also wenn ich sizeof(foo)/sizeof(foo mache[0]) es gibt 4/4 zurück, dh 1 .. ich habe es schon versucht … aber kein Glück … gibt es einen anderen Weg? Vielen Dank

    – Darpan

    7. Oktober 2009 um 7:32 Uhr

  • @Darpan: Dies funktioniert nur, wenn Sie int foo deklarieren[5]nicht int foo[].

    – mouviciel

    7. Oktober 2009 um 7:42 Uhr

  • stimme mouviciel zu, das wird nicht das bekommen, was du willst.

    – pxl

    7. Oktober 2009 um 15:48 Uhr

  • Ich habe damit experimentiert. die richtige Art, int foo anzuzeigen[] length ist use sizeof (foo)/4 . muss durch 4 geteilt werden. Es funktioniert auch mit nicht primitiven (NSString).

    – HelmiB

    8. Juli 2011 um 3:47 Uhr

Chucks Benutzeravatar
Futter

So etwas gibt es nicht array.length in C. Ein int-Array in Objective-C ist genauso als int-Array in C. Wenn es statisch definiert ist wie int foo[5]dann kannst du das machen sizeof(foo) um die Größe zu bekommen — aber nur in der gleichen Funktion foo ist definiert in (für andere Funktionen ist es nur ein int-Zeiger, kein Array an sich). Andernfalls gibt es keine Möglichkeit, diese Informationen zu erhalten. Sie müssen entweder die Größe weitergeben oder Sentinel-Werte verwenden (wie das abschließende ‘\0’ in C-Strings, die nur Arrays von Zeichen sind).

  • Ich suche nach Länge, dh Anzahl der Elemente in einem Integer-Array. und nicht sizeof.as wen id o sizeof it gibt mir einfach die sizeof int zurück

    – Darpan

    7. Oktober 2009 um 7:29 Uhr

  • Wie gesagt, geht nicht. sizeof() funktioniert für Arrays mit statischer Größe, wie das Beispiel, das ich oben gegeben habe, in derselben Funktion, in der sie definiert sind. Das ist das, was C der Unterstützung am nächsten kommt.

    – Chuck

    7. Oktober 2009 um 7:40 Uhr

Häh? In C gibt es so etwas wie “arrayname.length” nicht. Ein Array eines primitiven Typs, wie z int[]sind zur Laufzeit keine Längeninformationen zugeordnet.

[array count] Dies scheint in Objective-C am einfachsten zu funktionieren

Benutzeravatar von Matthew Frederick
Matthäus Friedrich

Dieser Code kann verwendet werden, wenn die Gesamtzahl der Elemente im Array nicht bekannt ist.

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();
}

Benutzeravatar von PeyloW
PeyloW

So etwas gibt es nicht arrayname.length in C. Deshalb nehmen so viele Funktionen Argumentpaare, ein Argument mit dem Array und ein Argument mit der Länge des Arrays. Der offensichtlichste Fall dafür ist die Hauptfunktion. Sie finden diese Funktion für alle Ihre iPhone-Projekte in einer Datei mit dem Namen main.mes wird in etwa so aussehen:

int main(int argc, char *argv[]) {    
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  int retVal = UIApplicationMain(argc, argv, nil, nil);
  [pool release];
  return retVal;
}

Beachten Sie, wie die argv Satz ist ein vector oder Array von Strings und die argc Argument ist ein cAnzahl der Elemente, die sich in diesem Array befinden.

Sie müssen dasselbe für alle primitiven Typen tun, dies ist die C Teil von Objective-C. Wenn Sie in der bleiben Zielsetzung Teile, die NSArray oder Unterklassen verwenden, funktionieren einwandfrei, erfordern jedoch, dass alle Elemente Objekte sind.

1393890cookie-checkLänge eines `int`-Arrays in Objective C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy