Bonjour à tous, j'ai vu ici comment calculer la taille d'un tableau statique.
Mon main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
#include <iostream>
int main() {
    int a[2] = {1, 2};
    std::cout << (sizeof(a) / sizeof(*a)); // affiche bien 2
}
Donc ici, tout va bien, mais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
template<typename T>
long unsigned int taille(T tab[]) {
    return (sizeof(tab) / sizeof(*tab));
}
Quand j'appelle cette fonction, elle me renvoie 1 (j'ai affiché les sizeof dans la fonctions et les deux valent 4 ??).
J'ai essayé de déclarer la fonction en inline (vu que le code est inséré quand la fonction est appelée), mais ça n'a pas fonctionné.
Ensuite, j'ai essayé avec des tableaux de tailles différentes et les sizeof valent tout le temps 4.
Pourquoi ?