Jestem absolutnym początkującym dla C, więc to może być głupie pytanie, ostrzeżenie!Jak mogę uzyskać adres struktury w C?
Inspiracją jest sekcja o dodatkowym kredycie: Exercise 16 w Nauce C na twardej drodze, jeśli ktoś zastanawia się nad kontekstem.
Zakładając przywóz:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
i otrzymać proste struct tak:
struct Point {
int x;
int y;
};
Jeśli utworzyć instancję niej na stercie:
struct Point *center = malloc(sizeof(Point));
assert(center != NULL);
center->x = 0;
center->y = 0;
Potem wiem, że mogę wydrukować lokalizację struktury w pamięci w ten sposób:
printf("Location: %p\n", (void*)center);
Ale co, jeśli utworzę go na stosie?
struct Point offCenter = { 1, 1 };
wartości siedzi w stosie nadal mają miejsce w pamięci gdzieś. Jak mogę uzyskać te informacje? Czy muszę utworzyć wskaźnik do mojej nowej na stosie-struktury, a następnie użyć?
EDYCJA: Ups, zgadnij, że to było trochę oczywiste. Podziękowania dla Daniela i Clifforda! Dla kompletności oto przykład drukowanie za pomocą &
:
printf("Location: %p\n", (void*)¢er);
Użyj operatora adresu '& offCenter'. –
@ Daniel Fischer: Proszę zaksięguj to jako odpowiedź :) Mam na myśli, naprawdę, jak Nick powinien wybrać komentarz jako najlepszą odpowiedź? –
Tak, czuję się teraz trochę głupi :) Dzięki Daniel. Czy chcesz opublikować to jako odpowiedź i uzyskać akceptację? –