Ir ao conteúdo
  • Cadastre-se
Igor Vargas

C Contagem com ponteiros em c

Recommended Posts

Eai pessoal. Estou com uma dúvida nesse exercício. Preciso mostras os 20 números a frente do numero que eu coloquei só que com o ponteiro encrementado e mostrar o conteudo dele.

O problema que depois da 1 posição ele mostra zeros.

 

#include <stdio.h>
#include <stdlib.h>



main(){
	
	int x=10, *pont; //numero é 10
	pont = &x;
	int y;
	for(y=0; y<20; y++){
	printf("%d\n",*pont);
	pont+=1;	
		
	}
	
	
	
	
	
	
	
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, tudo bem?

Interessante só que o melhor para mim é, ver o enunciado do problema como ele é.

Tem como digitar a questão completa?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC foi dado em aula, assim que o material for postado eu coloco aqui. Mas basicamente era criar uma variavel e um ponteiro e depois mostrar o conteudo das proximas 20 posições.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igor Vargas Então tudo bem.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC Crie uma variável do tipo inteiro e atribua um valor
qualquer.
• Crie um ponteiro que aponte para esta variável (receba
seu endereço de memória).
• Utilizando ponteiros, imprima na tela o valor contido na
variável.
• Imprima o conteúdo das próximas 20 posições inteiras
na memória.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igor Vargas Sendo assim, você acertou!

Em 08/08/2018 às 21:11, Igor Vargas disse:

O problema que depois da 1 posição ele mostra zeros.

Porque provavelmente é o que tem.

 

 

Ps.: Isso não quer dizer que esteja errado, em alguns teremos 0 e outros não. Depende de outras questões.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igor Vargas Olá. Já trabalhando com aritmética de ponteiros. Maravilha isso!

É importante entender bem o que ocorre nessa operação de incremento:

pont += 1;

"Incrementar um ponteiro acarreta sua movimentação para o próximo tipo apontado, isto é, se pont é um ponteiro para uma variável int, depois dessa operação de incremento, pont será incrementado em um int (4 bytes em ambientes de 32 bits).

Cada vez q pont é incrementado, apontará para o próximo int da memória. A mesma ideia é verdadeira para decremento".

Fonte: Treinamento em Linguagem C (Victorine Viviane Mazhari) 2ª Edição

Espero q ajude!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o assunto é aritmética de ponteiros, um exemplo bem didático para explicar exatamente o q ocorre ao incrementar ou decrementar um ponteiro é fazendo uso de uma matriz. Dessa forma a gente força para q os elementos da matriz sejam armazenados em um posição contínua da memória.

E, devido a isso, fica mais fácil entender um pouco mais a respeito de aritmética de ponteiros.

Segue o código:

#include <stdio.h>

int main(void) {

    int vet[] = { 2, 4, 6, 8, 10};
    int *p = vet; // aqui p aponta para o primeiro elemento do vetor
    int i;    

    for (i = 0; i < 5; i++) {
        printf("Endereco de memoria do indice %d do vetor: %p\n", i, &p[i]);
    }

    printf("Valor apontado por p: %d\n", *p);
    p += 3;
    printf("Valor apontado por p: %d\n", *p);
    p--;
    printf("Valor apontado por p: %d\n", *p);
    p += 2;
    printf("Valor apontado por p: %d\n", *p);
    p -= 3;
    printf("Valor apontado por p: %d\n", *p);

    return 0;
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×