Ir para conteúdo
Fórum Script Brasil
  • 0

Ajudaa: função com ponteiro


LpLk

Pergunta

Eu tenho uma função que possui como entrada variaveis ponteiro(não sei como usar direito) e preciso guardar valores digitados pelo teclado, nessas variaveis. Só que do jeito que eu to fazendo ta dando erro. alguém pode apontar o erro p ajudar um iniciante??

void inicializa_tabuleiro(char tabuleiro[MAXLIN][MAXCOL], int *k,

int *nlin, int *ncol)

{

int i, j;

printf("Digite o valor de k para o lig-k: ");

scanf("%d", &k);

printf("Digite o numero de linhas e de colunas: ");

scanf("%d %d", &nlin, &ncol);

coloca_moldura(tabuleiro, *nlin, *ncol);

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

O seu código está um tanto quanto confuso.

Pelo que entendi você criou uma matrix de char de nxn dimensões e você quer inserir nela um k de inteiro ? Isso vai dar problemas ela só receberá strings.

Ponteiros não guardam valores, eles apenas apontam para endereços de outras variáveis.

int a = 5;

int *b = &a; // b está sendo instruído a apontar para o endereço de 'a', o sinal de '&' antes do 'a' fornece o endereço da variável e não seu conteúdo, no caso o 5.

printf("%x",b); mostrará o endereço que 'a' ocupa na memória e que 'b' está apontando.

printf(%d",*b); mostrará o valor que o endereço que 'b' aponta contém, no nosso caso o número 5;

se fizer

b = 10 vai dar erro porque b só pode receber um endereço de memória que no caso é fornecido por 'a'

mas se fizer *b = 10 nesse caso tudo bem, você está dizendo que o endereço da variável que b aponta guardará o valor 10

se mandar imprimir 'a' , o valor impresso será 10 e não 5.

Se você tem uma variável ponteiro que não aponta para nada, ou que depois de apontar e ser utilizada perderá sua função, você precisará fazer *b = NULL ou *B = 0 . Pronto seu ponteiro não correrá o risco de apontar para algo que não exista ou que exista mas não deveria apontar.

Amigo essa é a magia da linguagem C/C++ você tem total liberdade de manipular suas variáveis.

No entanto o perigo está em seu ponteiro apontar para algo que não existe, que possa ter sido deletado antes, o seu programa apresentará um grave erro.

No seu algoritmo penso que seria algo do tipo :

na main você criar 3 variáveis: int k, int nlin, int ncol;

você faz uns printf e scanf para pegar o valor que deseja guardar e as posições na matrix.

depois é só passar para função.... caso minha função fosse guardar(int matrix[2][2], int *nlin, int *ncol, int *k)

na main a chamaria da seguinte forma guardar(matrix,&nlin,&ncol,&k)

e na função seria

matrix[*nlin][*ncol] = *k

você pode fazer uma graça e criar vários ponteiros tipo:

int a = 0;

int *b = &a;

int **c = &b;

int ***d = &c;

int ****e = &d;

printf("%d",****e);

ponteiros podem apontar para outros ponteiros ....uhallll...... quando o pessoal vê isso eles piram....quem programa em java somente, por exemplo, ao ver isso tem asia... hauahuahauh

Editado por Ezequiel A. Ribeiro
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...