Как я могу получить адрес структуры в C?
Я абсолютный новичок в C, так что это может быть глупый вопрос, предупреждение!
Это вдохновлено секцией дополнительного кредитаУпражнение 16 в Learn C the Hard Way, если кто-то интересуется контекстом.
Предполагая этот импорт:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
И учитывая простую структуру, как это:
struct Point {
int x;
int y;
};
Если я создам его экземпляр в куче:
struct Point *center = malloc(sizeof(Point));
assert(center != NULL);
center->x = 0;
center->y = 0;
Тогда я знаю, что могу распечатать расположение структуры в памяти следующим образом:
printf("Location: %p\n", (void*)center);
Но что, если я создам его в стеке?
struct Point offCenter = { 1, 1 };
Значения, находящиеся в стеке, все еще имеют место в памяти Так как мне получить эту информацию? Нужно ли создавать указатель на мою новую структуру в стеке, а затем использовать ее?
EDIT: Упс, угадайте, что это было немного очевидно. Спасибо Дэниелу и Клиффорду! Для полноты здесь приведен пример печати с использованием&
:
printf("Location: %p\n", (void*)¢er);