Stack Overflow на русском Asked by masya on January 1, 2022
Интересует, адрес памяти которую я выделил – это и есть адрес указателя ?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int *def;
int buf[] = {3,4,7,3,2,3,4};
def = (int *)malloc(sizeof(buf));
memcpy(def, buf, sizeof(buf));
for(int i = 0; i < sizeof(def); i++) {
if(def[i] == '') {
continue;
}
printf("[Число]: %d [Адрес]: %pn",def[i], &def[i]);
}
printf("n[Адрес указателя]: %pn", &def);
printf("[Адрес где хранится нулевой элемент массива]: %pn", def);
free(def);
return 0;
}
адрес памяти которую я выделил - это и есть адрес указателя ?
Нет.
Адрес выделенной памяти - это значение указателя. А адрес указателя - это адрес самого указателя и к выделенной памяти он никакого отношения не имеет. В данном случае, это адрес в стеке.
Answered by Qwertiy on January 1, 2022
Ну давайте по порядку:
С помощью аллокатора я создаю динамическую память
Память вы не создаете, она уже создана на фабрике в Китае, память вы выделяете ну или точнее система вам выделяет.
все элементы массива я переношу в указатель "def"
Не в указатель, а по адресу в указателе.
Нет, адрес памяти которую вы выделили хранится в указателе. Указатель можно рассматривать как числовую переменную для хранения адресов, у этой переменной тоже есть свой адрес не связанный с выделенной памятью. Пример:
int * pointer = (int *)malloc(4 * sizeof(int));
int ** pointer_of_pointer = &pointer; // адрес локальной переменной pointer
free(pointer);
Answered by Cerbo on January 1, 2022
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP