[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: OFF-TOPIC:Ayuda con programacion en C



root wrote:

> Hola a todos
> tengo el siguiente problema
>  si tengo ( en C );
>
> typedef struct {
>         int     variable;
>         int     *puntero;
> } estructura;
>
> y luego en una funcion declaro
>
> estructura      mi_estructura;
>
> aqui estoy un poco confundido...
> como le hago para;
>
> que 'mi_estructura.puntero' apunte a un valor
> que mediante 'mi_estructura.puntero' pueda modificar un valor de otra
> variable (del mismo tipo, claro) y que mediante 'mi_estructura.puntero'
> accese a valores de otras variables.
>
> y me confundo aun peor cuando se necesita hacer eso con punteros a
> estructuras
> como 'tu_estructura->puntero' y cosas por el estilo.
>
> grachie a todos
>
> +++++
> +T.O+
> +++++

Check that folk.

Si yo escribi el programita y lo voy a registrar como gnu (Que simpatico
no)


#include<stdio.h>


//Coontribucion del amigo root ritsa en df1 telmex net mx (que nombre tan
raro no).

typedef struct {
        int     variable;
        int     *puntero;
} estructura;


main()
{
int a, b, c;
estructura mi_estructura;
 a = 15;
 b = 523;

 mi_estructura.variable = a;
// mi_estructura.puntero ya es un apuntador no hay que usar ningun tipo de
dereferencia
// y tomamos la direccion de b
 mi_estructura.puntero = &b;

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

 mi_estructura.variable = 20;

//Precisamente porque mi_estructura.puntero es un apuntador y queremos
modificar el valor al que apunta (en este caso B )
//usamos el operador de dereferencia *
 *mi_estructura.puntero = 678;

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



//fin de programa

Nota que en ningun momento utilizamos el operador -> (flecha) esto es
porque este operador se usa cuando declaras apuntadores a estructuras (que
nada tienen que ver con apuntadores como miembors de una estructura)

en este caso pudimos declarar algo como

estructura *p_mi_estructura, mi_estructura;

y hacer algo como

p_mi_estructura = & mi_estructura;

tal cual lo haces con los tipos de datos comunes.

y entonces si es totalmente valido hacer

p_mi_estructura->variable = 20;
*p_mi_estructura->puntero = 678;

Se nota la diferencia!

Si no pues pregunta!

Suerte!




[Hilos de Discusión] [Fecha] [Tema] [Autor]