¿Puedo saber el tamaño de matriz de caracteres al que apunta una variable de puntero de carácter?

Debo saber el tamaño de la matriz a la que apunta una variable de puntero char.

Pero sabes que la operación sizeof no funciona.

char a[5]; char *b= a; int c = sizeof(b); printf("%d", sizeof(b)); // 8(64 bit cpu) printed, not 5 . 

Gracias de antemano.

No, una vez que lo conviertes en un puntero (que también se hace cuando se pasa la matriz como un argumento a una función), se pierde toda la información de tamaño sobre la matriz.

Si algún fragmento de código necesita saber el tamaño de una matriz, asegúrese de que el código que lo llama le indique el tamaño de la matriz.

Los punteros (que es lo que las matrices decaen cuando haces cosas como estas) no “saben” nada sobre el tamaño de los datos a los que apuntan. Necesitas seguirlo por separado.

no puede obtener esa información, lo único que podría hacer es incrustar la información si es algo que necesita:

 int* array = malloc( sizeof(int) * (n + 1) ); *array = n; ++array; 

entonces cuando quieras saber el tamaño

 int n = *(array - 1); 

Lo mismo se puede hacer con char o cualquier tipo que necesites.

Esto puede ser debido a la alineación de 4 bytes.

Para confirmar intente con un [8], un [10] etc.