Array doorgeven in functie

Status
Niet open voor verdere reacties.

Bluejie

Gebruiker
Lid geworden
10 sep 2007
Berichten
86
Hallo,

Ik ben net begonnen met C++ en loop ergens tegenaan. Ik ben een functie aan het maken dat de lengte van een array geeft. Nou vond ik het volgende:

Code:
int d = sizeof(row) / sizeof(row[0]);

Dit werkte in de main-functie, maar nadat de array was "doorgegeven" naar een andere functie leverde het telkens 1 op. Het blijkt dat na het doorgeven die sizeof() standaard 4 returnt. Zie het volgende:

Code:
#include <iostream>
using namespace std;
int sb_arrlength(int a[])
{
    int d = sizeof(a) / sizeof(a[0]);
    cout << sizeof(a) << endl;  // geeft 4
    cout << sizeof(a[0]) << endl; // geeft 4
    cout << d << endl;
    return 0;
}

int main()
{
    int row[30];
    sb_arrlength(row);
    int d = sizeof(row) / sizeof(row[0]);
    cout << sizeof(row) << endl;// geeft 120
    cout << sizeof(row[0]) << endl;// geeft 4
    cout << d << endl;
    system("PAUSE");
    return 0;
}

In de main-functie geeft hij precies weer wat hij zou moeten weergeven, maar in sb_arrlength-funtie geeft de sizeof() twee keer een 4, en dat geeft weer een int d = 1. Iemand enig idee hoe dit te verhelpen?
 
Laatst bewerkt:
je moet de pointer naar de array aan de functie geven dan moet het werken.
 
Ah danku!

Oplossing
Code:
template <typename T,unsigned S>
unsigned sb_arrlen(const T (&v)[S])
{
  return S;
}
Werkt niet bij dynamische arrays ;), maar dat had ik gelukkig niet nodig...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan