¿Hay alguna manera de que pueda añadir const
palabra clave a un arreglo pasado como parámetro a la función:Adición palabra clave const a una matriz pasada como parámetro para funcionar
void foo(char arr_arg[])
Si coloco const
antes char
(void foo(const char arr_arg[])
) o después de char
(void foo(char const arr_arg[])
), eso significaría que es char
que es constante, no el arr_arg
.
yo acabamos de read que bajo el capó una matriz enviado como parámetro a la función se representa como un puntero, así void foo(char arr_arg[])
es la misma que void foo(char* ptr_arg)
. Teniéndolo en cuenta, puedo volver a escribir la función como void foo(char * const ptr_arg)
para que sea exactamente lo que quiero lograr.
Pero me gustaría saber si hay una manera de añadir const
palabra clave en esta declaración void foo(char arr_arg[])
para que sea el mismo que void foo(char * const ptr_arg)
(y no void foo(char const * ptr_arg)
o void foo(const char * ptr_arg)
)?
Solo quiero entender si hay una sintaxis para hacer que arr_arg
sea constante con la notación de matriz []
.
¿hay alguna razón específica no desea hacer 'void foo (const char * ptr_arg)'? Es exactamente la misma sintaxis en todos lados. Todavía puede hacer ptr_arg [0] como si se hubiera declarado como una matriz. –
@Hans Solo quiero entender si es sintácticamente posible hacerlo con notación de matriz '[]'. Sin razón específica. Solo quiero aclarar si es posible o no (solo para saber en el futuro y no perder el tiempo pensando si es posible o no una y otra vez). – ovgolovin
No creo que haya ninguna necesidad de declarar el puntero como const, ya que se pasará por valor de todos modos. Solo si explícitamente desea proteger de la asignación (la copia del puntero en la pila) dentro de la definición de funciones. –