Aquí está el código:¿Cómo determinar el final de una matriz de enteros al manipular con un puntero entero?
int myInt[] ={ 1, 2, 3, 4, 5 };
int *myIntPtr = &myInt[0];
while(*myIntPtr != NULL)
{
cout<<*myIntPtr<<endl;
myIntPtr++;
}
Output: 12345....<junks>..........
Para matriz de caracteres: (Ya que tenemos un carácter nulo al final, no hay problema, mientras que la iteración)
char myChar[] ={ 'A', 'B', 'C', 'D', 'E', '\0' };
char *myCharPtr = &myChar[0];
while(*myCharPtr != NULL)
{
cout<<*myCharPtr<<endl;
myCharPtr++;
}
Output: ABCDE
Mi pregunta es, ya decimos para añadir NULL carácter como final de las cadenas, ¡descartamos tales problemas! Si en el caso, es una regla para agregar 0 al final de la matriz de enteros, podríamos haber evitado este problema. ¿Que dice?
¿Dónde se define std :: begin/end? ¿Viene con C++ 0x? –
@Christian: Sí, o con Boost. – UncleBens
@Christian Sí, esta es una nueva característica de C++ relacionada con Range. Boost.Range incluye esto y mucho más, simplificando mucho el algoritmo en las secuencias. –