Jump to content
Fórum Script Brasil
  • 0

Ajudaa: função com ponteiro


LpLk
 Share

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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

Edited by Ezequiel A. Ribeiro
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.

 Share



  • Forum Statistics

    • Total Topics
      150.9k
    • Total Posts
      648.8k
×
×
  • Create New...