Die Größe des Zeigers: sizeof(myPointer)
(Gleich sizeof(uint8_t*)
)
Die Größe des Zeigen auf-Gegenstand: sizeof(*myPointer)
(Gleich sizeof(uint8_t)
)
Wenn Sie meinen, dass dies auf ein Array zeigt, gibt es keine Möglichkeit, das zu wissen. Ein Zeiger zeigt nur an und kümmert sich nicht darum, wo der Wert herkommt.
Um ein Array über einen Zeiger zu übergeben, müssen Sie auch die Größe übergeben:
void foo(uint8_t* pStart, size_t pCount);
uint8_t arr[10] = { /* ... */ };
foo(arr, 10);
Sie können ein Template verwenden, um das Übergeben eines gesamten Arrays einfacher zu machen:
template
void foo(uint8_t (&pArray)[N])
{
foo(pArray, N); // rufen Sie ein anderes foo auf, füllen Sie die Größe ein.
// könnten auch einfach Ihre Funktion dort schreiben, wobei N als Größe verwendet wird
}
uint8_t arr[10] = { /* ... */ };
foo(arr); // N wird abgeleitet
0 Stimmen
@Stefan - kannst du einen Link zum Duplikat hinzufügen?
0 Stimmen
@ChrisF - Sicher! stackoverflow.com/questions/1975128/…