• Viernes 19 de Abril de 2024, 14:37

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.


Mensajes - Oquindracir

Páginas: [1]
1
C/C++ / Re:Ejercicio basico de punteros
« en: Domingo 1 de Septiembre de 2013, 02:05 »
Hola, gracias por responder, solo tengo estas dudas respecto a tu respuesta y son las siguientes: las variables a y b al ser locales  se almacenan en la pila, es decir sus direcciones 1000 y 1001 se encuentran en la pila ¿porque estas variables no se limpian al salir, si tambien forman parte de la pila?

Otra cosa, mi duda respecto al uso de variables globales en lugar de locales, me referia a quiar las variables locales int a = 5 y int b = 10 y declararlas como globales antes del main. Al hacer esto se sigue realizando la misma accion, es decir las variables a y b se intercambian, y es donde surge mi duda que nose porque se realiza esto, ya que  al ser variables globales estas no se almacenan en la pila, entonces ¿como se da el paso por referencia en este caso?

2
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]