Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1
    kappalinux
    E ai galera, blza?
    Eu estava estudava sockets em C e apareceu uma duvida e corri atras para esclarecer. Obtive muitas conclusoes.
    Uma dessas conclusoes que cheguei foi em um "cast de struct". Gostaria de saber se realmente existe isso. Se eh possivel realizar um cast de struct?
    Gostaria de trocar algumas ideias com alguem q saiba para ver se as minhas conclusoes e o meu raciocinio estah certo.
    faloow
    ateh+
    []´s

  2. #2
    hez4el
    Olá amigo..
    Um struct não é um tipo em que pode ser feito
    um cast. Isto acontece porque ele representa uma colecao
    entao sua estrutura interna nao pode ser modificada para
    nenhum tipo existente ja que relativamente struct não
    é um tipo mas uma estrutura como um record.
    Os casts só podem ser feitos entre tipos de dados definidos
    como float, int, char etc...
    Isso foi o que li em um artigo sobre tipagem de dados em c.
    Se algúem souber algo diferente gostaria que postasse porque esta
    é uma duvida bem interessante.

    Espero que tenha ajudado.

    [ Esta mensagem foi editada por: hez4el em 26-09-2003 10:50 ]



  3. #3
    kappalinux
    e ai hez4el..
    Fikei na duvida agora..mas uma duvida eh sempre saudavel para acrescentar algo e chegar a conclusoes.
    eu posto aqui o que eu chamaria de "cast de struct" nao sei se essa seria a nomeclatura correta, abaixo segue o fonte.

    #include <stdio.h>

    struct teste{
    char ip[10];
    char ip2[10];
    };

    struct teste_principal{
    char nome[30];
    struct teste var;
    };

    int main(){
    struct teste_principal fau;
    char str[10];
    printf("Digite algo:&quot<IMG SRC="images/forum/icons/icon_wink.gif">;
    scanf("%s",str);
    fau.var = *((struct teste *)str);
    printf("%s -> tudo OK -> Aqui utilizamos (struct teste_principal *)str\n",(struct teste_principal *)str);
    printf("%s -> tudo OK -> Aqui utilizamos fau.var = *((struct teste *)str)\n", fau.var.ip);
    printf("%s -> ERRO -> Aqui utilizamos fau.var = *((struct teste *)str)\n\n", fau.var.ip2);
    return 0;
    }

    faloow

  4. #4
    fricardo
    Kappalinux,

    sem dúvida vc pode fazer o q vc chama de "cast de struct" e isto inclusive é bastante usado em sockets, não é mesmo? Via de regra os casts são muito poderosos e úteis e vc pode usá-los o máximo. O poder aparece principalmente usando ponteiros como vc fez no exemplo. Acho q vc não precisa esquentar muito, use, porque se não for possível dá erro de compilação.



  5. #5
    kappalinux
    valeu fricardo..
    vou ver o posso fazer com isso.
    <IMG SRC="images/forum/icons/icon_wink.gif">






Tópicos Similares

  1. diretivas de compartilhamento
    Por vandemberg no fórum Servidores de Rede
    Respostas: 1
    Último Post: 21-04-2002, 18:43
  2. balanceamento de carga
    Por wolvie no fórum Servidores de Rede
    Respostas: 1
    Último Post: 12-04-2002, 23:00
  3. Passos para conf de uma estacao linux ..
    Por MarcelScan no fórum Servidores de Rede
    Respostas: 1
    Último Post: 04-04-2002, 22:40
  4. Proteção de arquivos
    Por kecal2002 no fórum Servidores de Rede
    Respostas: 1
    Último Post: 01-04-2002, 21:54
  5. Performance de Sistemas com WIN98/LINUX-SAMBA
    Por soyeu no fórum Servidores de Rede
    Respostas: 1
    Último Post: 28-03-2002, 21:55

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L