2011-10-12 12 views
5

¿Cuál es la diferencia entreC declaración de variable

char *a[10]; 

y

char *(a[10]); 

He utilizado siempre el primero de una serie de punteros de char, pero el código ahora que he encontrado utiliza el segundo .
Como no estaba seguro de si era lo mismo, imprimí sizeof() y ambos devolvían 80 (SO de 64 bits), por lo que estoy dispuesto a creer que ambos son iguales (una matriz de punteros de caracteres).

Pero como no puedo encontrar ninguna explicación en línea ni nada usando la sintaxis * ([]), estaba buscando alguna confirmación.

Gracias

Respuesta

11

Los dos son equivalentes y representan una matriz de 10 elementos de punteros a char.

Contraste con char (*a)[10], que es un puntero a una matriz de 10 elementos de char.

En caso de duda, se podría usar cdecl para descifrar declaraciones de C. En Unix, generalmente está disponible como una herramienta de línea de comandos. También hay un online version.

1

char *a[10]; y char *(a[10]); son lo mismo. Para que quede claro, digamos de esta manera, char *a[10]; es pointer array de 10 y más tarde es una matriz de 10 donde all are pointers! Ves que ambos son iguales con una forma diferente de decir eso.

Cuestiones relacionadas