[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