Правильно ли я понимаю, что массив создается и на куче и на стеке, но как он выбирает, куда ему класть значения. Или он кладет первые три элемента в куче, так как в первых трех элементах лежит адрес на кучу, а остальные на стеке.
int c[6];
*c = (int)malloc(3 * sizeof(int));
c[1] = 5;
c[2] = 3;
c[5] = 53;
printf("%d %d %d", c[1], c[2], c[5]);
int c[6];
*c = (int)malloc(3 * sizeof(int));
В стеке выделяется массив на 6 целых знаковых 32битных(как правило, но не обязательно, может быть и 16 бит) чисел, затем по индексу 0 этого массива присваивается число - адрес в памяти, который указывает на только что выделенный в куче массив на три таких же числа.
Выражение вида *(c + n)
эквивалентно с[n]
, в вашем случае n
равно 0
.
Правда, непонятно, зачем вы присваиваете элементу одного массива адрес другого...
У вас один массив - в стеке, массив c. Второй якобы массив из трех int у вас выделяется в куче, но все, что вы с ним делаете - это преобразуете его адрес в int (если получится) и сохраняете его в c[0]. Все
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Сделал частитчно менеджер загрузки спрайтов и моделей 3dЗагружается через load_manager
Задача: организовать максимально простое программное добавление/удаление строк в таблицу
JS(React native) только изучаю после JAVA, не пойму понять в чем фишка и почему не вызывается функция async внутри функции? Где моя ошибка?
Можно ли использовать setTimeout в качестве установки последовательности? Или может есть лучшие варианты как это сделать? Для примера вот небольшая...