Avatar billede rocco_siffredi Nybegynder
26. januar 2006 - 12:07 Der er 6 kommentarer og
1 løsning

Array længde

Er det muligt at finde antallet af elementer i dette array?

  double* d = new double[3]; // Længden kan ændres...

Og ja... Jeg ved godt at antallet er 3 (i dette tilfælde), men jeg skal bruge længden på runtime.

// Rocco
Avatar billede jpk Nybegynder
26. januar 2006 - 12:46 #1
Nej, arrays er ikke dynamiske i C++ og du kan ikke finde længden.
Men længden er jo stadig 3 runtime, så...

Hvis du har behov for noget mere avanceret, kan du bruge STL's Vector. Den har en metode (size) til at gi' dig antallet af elementer.
Avatar billede rocco_siffredi Nybegynder
26. januar 2006 - 12:50 #2
Ok. "3" er kun et eksempel på antallet.

// Rocco
Avatar billede morhan Novice
26. januar 2006 - 12:52 #3
prøv sizeof(d)/sizeof(double)
Avatar billede jpk Nybegynder
26. januar 2006 - 12:55 #4
morhan >> sizeof(d) giver størrelsen på d, ikke arrayet den peger på!
Avatar billede rocco_siffredi Nybegynder
26. januar 2006 - 12:56 #5
Nix. d er en pointer - sizeof(d) returnerer 4, som for andre pointere
Avatar billede jpk Nybegynder
26. januar 2006 - 12:56 #6
Jeg ved godt 3 kun var et eksempel, men du må enten gemme værdien selv eller bruge en implementation som gør det for dig (fx vector).
Avatar billede bertelbrander Novice
26. januar 2006 - 20:22 #7
Hvis man nu VED at kompileren er Borland C++ kan man være lidt kreativ:
#include <iostream>
void Func(unsigned int *p)
{
  std::cout << "Length: " << p[-1]/sizeof(unsigned int );
}

int main()
{
  unsigned int *p = new unsigned int [11];
  Func(p);
  delete [] p;
}

Men det kan IKKE anbefales, og virker ikke med andre kompilere.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I dag 08:31 HVIS med datoer Af HHA i Excel
I går 20:12 Ældre lysstofarmatur (2011) Af ErikHg i Fri debat
I går 14:05 Numerisk liste Af AND i Excel
I går 09:39 Ændre nuller til ovenstående tal Af boro23 i Excel
I går 06:47 videoclip - icon Af Malm i Andet software