Porción de memoria de una variable

Cuando declaramos y asignamos una variable se le asigna una porción de memoria a esta junto con el valor que especificamos.

En cambio cuando inicializamos una variable sin asignarle un valor el compilador le brinda una porción de memoria con contenido "basura" (qué es epsecificamente esta basura lo decide el compilador) → Como no podemos asumir nada sobre el contenido de esa basura es una buena práctica asignarle un valor a las variables que inicializamos.

Pasaje de parámetros por valor o por copia

/* Ejemplo 1 */
/* Este programa imprime en consola "Y: 10" */

#include <iostream>

void cambiarValor(int x) {
	x = 15;
}

int main(){
	int y = 10;
	cambiarValor(y);
	std::cout <<"Y: " << y << endl;
	return 0;
}

Pasaje de parámetros por valor (o copia)

/* Ejemplo 2 */
/* Este programa imprime en consola "Y: 15" */

#include <iostream>

**int** cambiarValor(int x) {
	x = 15;
	**return x;**
}

int main(){
	int y = 10;
	**y =** cambiarValor(y);
	std::cout <<"Y: " << y << endl;
	return 0;
}

Pasaje de parámetros por referencia (aliasing)

/* Ejemplo 3 */
/* Este programa imprime en consola "Y: 15" */

#include <iostream>

void cambiarValor(int **&x**) {
	x = 15;
}

int main(){
	int y = 10;
	cambiarValor(y);
	std::cout <<"Y: " << y << endl;
	return 0;
}