Tengo algo de código que estoy manteniendo con la siguiente declaración de variables:matriz C como parámetro de la función char *
char tmpry[40];
Está siendo usado con esta función:
char *SomeFunction(char *tmpryP) {
// Do stuff.
}
La función llamada es:
SomeFunction(&tmpry[0]);
estoy muy muy seguro de que eso es lo mismo que:
SomeFunction(tmpry);
Incluso he comprobado que el puntero de caracteres * en SomeFunction termina apuntando a la misma ubicación de memoria que la matriz en ambos casos.
Mi pregunta es una comprobación de la cordura en cuanto a si las dos llamadas de función son idénticas (y, por lo tanto, el programador original estaba siendo desagradable)?
Creo que sería bueno para pasar una longitud también a algunaFuncion, por si acaso ... :) –
El nombre de la matriz de caracteres es un alias para la dirección del primer elemento de la matriz. – David
Hola, soy uno de esos programadores "asquerosos" que escribe así. En general, hago esto en código C++, por la razón de menor acoplamiento a la abstracción de matriz utilizada en este momento. Es decir. para una estructura de datos * abstracta * en forma de matriz (como 'std :: vector') con 'operador' [] expresiones sobrecargadas 'x' y' & x [0] 'significará cosas muy diferentes, y el * segundo * uno es el que se ajusta mejor para mi intención. Por supuesto, todo esto no importa tanto para la C simple, ya que casi no se obtiene abstracción de datos en C; por lo tanto, se debe preferir la ortografía con legibilidad superior. –
ulidtko