Ir ao conteúdo
  • Cadastre-se

C Contagem com ponteiros em c


Igor Vargas

Posts recomendados

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;	
		
	}
	
	
	
	
	
	
	
}

 

Link para o comentário
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.

Link para o comentário
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
Link para o comentário
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!

Link para o comentário
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;
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!