Ir ao conteúdo

Posts recomendados

Postado

Estou mexendo com ponteiros, mas ao acessa o endereço de memoria sempre da um erro quando compilo e quando executo são números aleatorio e até negativos, o codigo :

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

int main(){
  int x=10,*p;
    p = &x;
    printf("%d",p); 

return(0);
}

Já tentei com o "%p" mas os número que aparecem começam com 0x7ff e nunca são fixos. O erro que da quando tento compilar com o "%d" é :

teste.c:10:12: warning: format ‘%d expects argument of type int’, but argument 2 has type int *’ [-Wformat=]
     printf("%d",p);
            ^

Não sei se muda algo, mas estou usando o gcc pelo linux mint 18.1

Postado

Se p é um ponteiro, então para imprimir o valor de p tem que referenciar: *p.

E.i.: printf( "Show valor de p: %d", *p );

 

Se p é um ponteiro, então para imprimir o número do local na memória de p basta tratar p como um int: p.

E.i.: printf( "Show Address memory: %d", (int)p  );

 

Postado

Locais na memória não são fixo.

p -> é um local na memoria, e em printf o string format correto é "%p".

E naturalmente é  exibido um número hexadecimal.

Visitante
Este tópico está impedido de receber novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!