Jump to content
Fórum Script Brasil
  • 0

Estrutura dentro de estrutura


Karkaroffy

Question

O problema é simples, tem uma variável do tipo struct dentro de uma struct. Eu consigo manusear ela normalmente dentro da Main, mas ao passar ela para uma função dá erro:

#include <stdio.h>

typedef struct {
    int num;
} reg1;

typedef struct {
    reg1 numero;
} reg2;

void calcula(reg2 reg);

int main () {

    reg2 reg;

    calcula(reg);

    printf ("%d", reg.numero.num);

    return 0;

}

void calcula (reg2 reg){

    reg.numero.num = 5;

}
Ou seja, se eu atribuir o valor 5 a 'num' dentro da Main com:
reg.numero.num = 5;

dá certo, já se eu usar isso dentro da função não dá...

Agradeço quem puder ajudar :)

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Você está criando uma função que tem parametros passado por cópia, logo o valor alterado é da cópia da estrutura passada e não da própria.

Não entendi o que você quer fazer, por que se for pra atribuir é bem mais recomendável fazer dentro de main, caso faça um calculo, mostre nos que tipo de cálculo seria.

Link to comment
Share on other sites

  • 0
#include <stdio.h>

typedef struct{
    int num;
} reg1;

typedef struct {
    reg1 numero;
} reg2;

void calcula(reg2* reg);

int main ()
{
    reg2 reg;
    calcula(&reg);
    printf ("%d", reg.numero.num);
    return 0;

}

void calcula (reg2* reg){
    reg->numero.num = 5;
}

Edited by Mateus GP
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...