Größe des Zeichenzeiger-Arrays von der Funktion

Verwenden Sie diesen Code:

#include <stdio.h>

void printSize(char *messages[]) {
    printf("%d", sizeof(messages) / sizeof(char *));
}

int main(void) {

    printf("Size when through passing direct to function: ");
    printSize((char *[]){"Zero", "One", "Two", "Three"});
    printf("\n");

    printf("Size when calculating in main: %d\n", sizeof((char *[]){"Zero", "One", "Two", "Three"}) / sizeof(char *));

    return 1;
}

Ich erhalte folgende Ausgabe:

Size when through passing direct to function: 1
Size when calculating in main: 4

Ich verstehe, dass es keine Möglichkeit gibt, die richtige Anzahl von Elementen in einem char * -Array abzurufen, bin aber gespannt, warum sie unterschiedliche Ergebnisse liefern.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage