[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]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!