Ir ao conteúdo

Posts recomendados

Postado

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

 

Postado

Olá, tudo bem?

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

Tem como digitar a questão completa?

 

 

Postado

@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.

Postado

@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
Postado

@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!

Postado

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

 

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...