[C con Clase] Arreglo multidimensional
Steven Davidson
srd4121 en njit.edu
Vie Abr 24 19:12:29 CEST 2009
Hola Gilberto y Salvador,
Salvador Pozo wrote:
> Hola:
>
>> A ver si nos entendemos, porque no fue esto lo que él puso, porque
>> puso el "const" después del "char", y a mi entender no es lo mismo:
>>
>> char const *szBidiArray[] = { "String1", "String2" };
>>
>> que
>>
>> const char *szBidiArray[] = { "String1", "String2" };
>
> Cierto, fallo mío.
>
> Tal como lo puso, (y como bien dices) es un array de punteros
> constantes.
>
> Y tal como se ha inicializado, es un array de punteros constantes a
> cadenas constantes.
>
Me temo que esto no es correcto. En ambos casos, se trata de un array de
punteros a caracteres constantes. Puedes colocar 'const' antes o después
del tipo. Por ejemplo,
const char c;
char const d;
const int *ptr1;
int const *ptr2;
Personalmente, y creo que es mayoritario, escribo 'const' antes del tipo.
Si quieres un puntero constante, entonces debes colocar 'const' después
del declarador del puntero. Esto es,
double * const ptr;
Esto es un puntero constantes a 'double'. Por lo tanto, existen 4 formas
diferentes de declarar con y sin 'const' para un puntero. Por ejemplo,
double *ptr_1; // puntero a 'double'
const double *ptr_2; // puntero a 'const double'
double * const ptr_3; // puntero constante a 'double'
const double * const ptr_4; // puntero constante a 'const double'
Las declaraciones de 'ptr_2' y 'ptr_4' podrían haber sido escritas de
esta manera:
double const *ptr_2;
double const * const ptr_4;
No hay diferencia con las otras versiones.
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase