Dev - C++ - Pregunta sobre constantes y paso de variables primitivas en funciones.

 
Vista:

Pregunta sobre constantes y paso de variables primitivas en funciones.

Publicado por Antonio (2 intervenciones) el 10/04/2018 19:01:54
Buenos días a todos. Tengo una duda desde hace un tiempo. Si yo creo una función y le paso variables primitivas (int, float, char...) y las paso con la palabra reservada "const" es decir: "Paso a constante". Éstos datos no se podrán modificar en la función. Pero, ¿afecta algo a nivel de memoria? Es decir, ¿es más eficiente internamente con el const o da exactamente igual? (Por ejemplo un struct si es más eficiente hacer paso por referencia "const tuStruct & ejemplo);

Ej:

/* Si en ambas funciones no voy a variar el valor de X, ¿es igual de eficiente o más eficiente a nivel interno poner
* el const delante?*/
void miFuncion(int x) {
....
...
...
}

void miFuncion(const int x) {
....
...
...
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pregunta sobre constantes y paso de variables primitivas en funciones.

Publicado por Tom (54 intervenciones) el 11/04/2018 20:31:45
Es difícil contestar a eso. En principio dependería mucho del compilador y la plataforma en la que compilaras.
Hipotéticamente, en algún caso, si acaso ... podría permitir al compilador generar código más eficiente, pero mayormente cuando pasas objetos, no cuando pasas tipos básicos.
De cualquier manera, los parámetros a una función se van a copiar (aquí es cuando el compilador optimizará, generalmente, la copia de objetos pasados por valor y const) en el stack de dicha función, así que la zona de memoria dudo mucho que vaya a cambiar por poner const en el caso que planteas.

Por lo demás, es buena idea usar const cuando sea aplicable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pregunta sobre constantes y paso de variables primitivas en funciones.

Publicado por Antonio (2 intervenciones) el 11/04/2018 21:40:03
Muchas gracias, ya tenia pensado hace un programa que llamara a una función con 2 variables int (por y sin constantes) que diera 100.000 vueltas y ejecutarla con una instrucción básica X veces y hacer una media del tiempo en ejecución.

Lo único que veo diferente es que la copia se bloquea si añades el const del tipo primitivo (solo lectura) y no puedes modificar dichos valores en las funciones. Lo veo más útil ahora que lo pienso para código compartido indicar a futuros programadores que ese valor no debe modificarse.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar