11. september 2002 - 13:56Der er
5 kommentarer og 1 løsning
lægden af et array i c
Jeg vil gerne tælle hvor mange elementer der er i arrayet a Hvordan gøres dette? jeg ved at der er en funktion til dette ligesom i java... men hvad hedder den i c?
Hvis du har oprettet et array, f.eks. sådan her: int a[100]; kan du finde ud af hvor mange elementer der er plads til i arrayet med: sizeof(a) / sizeof(a[0])
Hvis du derimod har oprettet arrayet dynamisk med new eller alloc er det et helt andet problem: int *a = (int*)alloc(400); //C eller int *a = new int[100]; //C++ Her tror jeg faktisk ikke der er andre muligheder end at du selv holder styr på hvor stort arrayet er.
Mener du at du vil finde ud af at du f.eks. har fyldt noget i 42 ud af 100 celler i et array, KAN det blive lidt besværligt:
Enten reserverer du en bestemt værdi, som du fylder i de celler som er tomme, hvilket selvfølgelig betyder at denne værdi IKKE kan bruges som reel data i arrayet. Det er selvfølgelig et problem, hvis du f.eks. har et array af int's, og du ikke har en bestemt værdi du kan reservere.
Hvis ikke det er en brugbar løsning, kan du oprette et bool-array af samme længde som det primære array, og sætter de entelte celler i dette til true eller false, afhængigt af om der er data i cellen med samme index i det 'rigtige' array.
For begge tilfælde gennemløber du arrayet (f.eks. med en for-løkke), og undersøger hvor mange celler der indeholde data.
trp79 >> java indbyggede length() funktion er netop opnået ved at der sammen med en hvilken som helst tabel også oprettes en member-variabel med antallet af elementer i tabellen. (Men der er "compileren" der gør det.) Hvis du skal opnå det samme i C++, skal du som mbulow er inde på, selv lave en tabel-klasse - eller simpelthen bruge STL (Standard Template Library) vector typen:
vector<int> a[100];
STL-klassen vector har en length() funktion, som du kender den fra JAVA. (Jeg er ikke helt sikker på syntaksen i d.o. - men du kan sikkert finde den rigtige fra on-line hjælpen til din C++ compiler.)
okey det fatter jeg så ikke så meget af! Men det kommer nok :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.