• Jueves 25 de Febrero de 2021, 19:35

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Oquindracir

Páginas: [1]
1
C/C++ / Ejercicio basico de punteros
« en: Sábado 31 de Agosto de 2013, 06:39 »
Hola, buen dia, tengo duda en este ejercicio basico de punteros que se suele poner en algunos libros como una introduccion a los  punteros y al paso por rereferencia. Mi duda no es el programa en si, digamos que mas o menos lo entiendo lo que no alcanzo a comprender del todo, es el papel que juegan los punteros para realizar esta accion. El programa consiste en intercambiar dos valores de dos variables. El programa es el siguiente:

#include <stdio.h>

void change ( int *x, int *y);

void main(void){
    int a = 5, b = 10;

    printf("a = %d b = %d\n", a,b);
    change(&a,&b);
    printf("a = %d b = %d\n", a,b);
}

void change( int *x, int *y){

    int z;

    z = *x;
    *x = *y;
    *y = z;

}
Ademas, ya que el paso por referencia consiste en copiar las lvalue(direcciones de memoria de la variable) a la pila(stack),  ¿porque al declarar las variables "a" y "b" como globales en lugar de locales(como estan el programa), se siguen intercambiando los valores?,  ya que se supone que al no ser variables locales, estas no se almacenan en la pila y por lo tanto el paso por referencia no se logra.


Al hacer la prueba de escritorio, puedo entender perfectamente el programa, lo que no entiendo es ¿porque al no usar punteros no se realiza el intercambio de los datos de la variables?. Este el programa sin punteros, el cual al realizar la prueba de escritorio, me resulta que dichos valores si deberian de ser cambiados.

#include <stdio.h>

void change ( int x, int y);

void main(void){
    int a = 5, b = 10;

    printf("a = %d b = %d\n", a,b);
    change(a,b);
    printf("a = %d b = %d\n", a,b);
   
}

void change( int x, int y){

    int z;

    z = x;
    x = y;
    y = z;

}

El IDE que utilice fue el codeblocks.

Agradecia mucho cualquier ayuda, tips, recomendaciones, etc.

Páginas: [1]