La taille du pointeur: sizeof(myPointer)
(égal à sizeof(uint8_t*)
)
La taille du pointée: sizeof(*myPointer)
(égal à sizeof(uint8_t)
)
Si vous vouliez dire que ce point à un tableau, il n'y a aucun moyen de savoir cette. Un pointeur pointe juste, et ne se soucie pas d'où vient la valeur.
Pour passer un tableau via un pointeur, vous devrez aussi passer la taille:
void foo(uint8_t* pStart, size_t pCount);
uint8_t arr[10] = { /* ... */ };
foo(arr, 10);
Vous pouvez utiliser un modèle pour faire passer un tableau entier plus facile:
template <size_t N>
void foo(uint8_t (&pArray)[N])
{
foo(pArray, N); // call other foo, fill in size.
// could also just write your function in there, using N as the size
}
uint8_t arr[10] = { /* ... */ };
foo(arr); // N is deduced
Question en double. –
@Stefan - pouvez-vous ajouter un lien vers le doublon? – ChrisF
@ChrisF - Bien sûr! http://stackoverflow.com/questions/1975128/sizeof-an-array-in-the-c-programming-language –