Como posso obter o endereço de uma estrutura em C?
Eu sou um novato absoluto para C, então isso pode ser uma pergunta idiota, aviso!
É inspirado na seção de crédito extra doExercício 16 Aprenda C do Hard Way, se alguém estiver se perguntando sobre o contexto.
Assumindo estas importações:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
E dada uma estrutura simples como esta:
struct Point {
int x;
int y;
};
Se eu criar uma instância dele no heap:
struct Point *center = malloc(sizeof(Point));
assert(center != NULL);
center->x = 0;
center->y = 0;
Então eu sei que posso imprimir a localização da estrutura na memória assim:
printf("Location: %p\n", (void*)center);
Mas e se eu criar na pilha?
struct Point offCenter = { 1, 1 };
Os valores que estão na pilha ainda têm um local na memória em algum lugar. Então, como obtenho essa informação? Preciso criar um ponteiro para minha nova estrutura on-the-stack e usá-la?
EDITAR: Opa, acho que foi um pouco óbvio. Graças a Daniel e Clifford! Para completar, aqui está o exemplo de impressão usando&
:
printf("Location: %p\n", (void*)¢er);