Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

suzy

ponteiros

Mensagens Recomendadas

suzy    0
suzy

:wallbash: tou a começar com ponteiros

como e façoa isto?

Desenvolva uma função de nome calculo que receba por parâmetro dois inteiros A e B e

dois ponteiros para inteiro P e Q.

A função deve calcular a subtracção entre os dois inteiros e

colocar a diferença no local referenciado por P. Deve igualmente calcular a adição dos dois

inteiros e colocar a soma no local referenciado por Q.

2.1. Escreva uma função main() que lhe permita testar a função calcula desenvolvida

anteriormente*/

:-[

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
suzy    0
suzy

:-[ será assim=?

#include<stdio.h>

int calcula(int a, int b, int  *p, int *q)
  {
   int *soma;
   p=&a;
   q=&b;
   *soma= *p+*q;
   return *soma;
   }

   main()
   {
   int a, b,*total;
   printf(" introduza os valores\n");
   scanf("%d%d",&a,&b);
   *total=calcula(a,b);
   printf(" %d\n",*total);
   fflush(stdin);
   getchar();
   }

nao funciona :S

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
suzy    0
suzy

:-[têm razão, desculpem, pensava que era ponteiros  :-[

  outra questão!

 





void main()
{
int a=4, b=10;
int *p;
p=&a;
p=p+1;

.....

}

Este codigo tem um erro grave, esse erro grave é em relação a linha em que p=p+1 não é??

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
shumy    17
shumy

Não existe qualquer problema ai. Essa linha está correcta. Estás a avançar o ponteiro para o proximo inteiro.

Que erro dá? Não será em outro bocado de código?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

Existir existe pois em vez de incrementar o valor de a, vai incrementar o valor da posição de memória de a. Não sei se era a isto que te referias...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
shumy    17
shumy

Não é propriamente um erro. É uma operação perfeitamente normal. Se de facto é pretendido ser essa operação ou não, isso já é com o programador.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
suzy    0
suzy

:-[penso que como p=&a, vai buscar o seu endreçeo

logo p=p+1; tou a incrementar mais uma posição de memoria e nao o valor, penso eu  :shocking:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

;) isso e um problema de exame

alguma coisa tem de tar errada, não?  :eek:

Depende da pergunta do exame, sem mais informações não podemos dizer nada. Tal como o shumy disse tecnicamente está correcto, agora se quiseres aceder ao valor da variável em vez do endereço aí já é outra história.

EDIT:

:-[penso que como p=&a, vai buscar o seu endreçeo

logo p=p+1; tou a incrementar mais uma posição de memoria e nao o valor, penso eu  :shocking:

Ora exactamente. :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tool    0
Tool

Não é propriamente um erro. É uma operação perfeitamente normal. Se de facto é pretendido ser essa operação ou não, isso já é com o programador.

Exactamente, essa pergunta não faz sentido num exame...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Warrior    68
Warrior

Até digo mais, com uma probabilidade relativamente alta, "p" ficaria a apontar para "b".

Uma vez que "a" e "b" foram declaradas praticamente ao mesmo tempo, é bastante provável ficarem em lugares contíguos da memória.

Mas não, programação não funciona à base destas probabilidades..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade