En C++, las matrices no se pueden pasar simplemente como parámetros. Es decir, si puedo crear una función de este modo:Pasar una matriz como un parámetro de función en C++
void doSomething(char charArray[])
{
// if I want the array size
int size = sizeof(charArray);
// NO GOOD, will always get 4 (as in 4 bytes in the pointer)
}
no tengo manera de saber qué tan grande es la matriz, ya que sólo tengo un puntero a la matriz.
¿De qué manera tengo, sin cambiar la firma del método, para obtener el tamaño de la matriz e iterar sobre sus datos?
EDIT: simplemente una adición con respecto a la solución. Si la matriz de caracteres, en concreto, se ha inicializado como tan:
char charArray[] = "i am a string";
entonces el \0
ya se adjunta al final de la matriz. En este caso, la respuesta (marcada como aceptada) funciona de la caja, por así decirlo.
En realidad, aquí hay un malentendido bastante grande. La sintaxis en su ejemplo no tiene sentido: la función toma una cantidad desconocida de datos en la pila. ignora la sintaxis original y le da a la función la firma 'void doSomething (char * charArray)'. No se conserva ninguna de la matriz si la llamas con 'char array [10]; doSomething (array);'. Ver http: //c-faq.com/aryptr/aryptrparam.html – kfsone