здесь, к моему первому сообщению на этом сайте.
Я пытаюсь инициализировать массив из 30 указателей в NULL. Массив хранится как глобальный, и я выполняю инициализацию в своей функции init() следующим образом:
static headerT* free_list[30];
....
init() { free_list[30] = {NULL}; }
Тем не менее, я получаю следующую ошибку-компилятор: "ошибка: ожидаемое выражение до" {токен ".
Любые мысли о том, что я могу делать неправильно?
Заранее спасибо.
объекты, выделенные статической продолжительностью хранения, инициализируются значением. Ваши указатели уже инициализированы значением nullptr
.
arr
- массив из n элементов, то первая ячейка является arr[0]
а последняя - arr[29]
. arr[30]
находится вне массива, и ссылка на него может вызвать всевозможные проблемы.for
для доступа к каждой ячейке.Таким образом, мы получаем:
init()
{
int i;
for(i=0; i<30; i++)
free_list[i] = NULL;
}
NULL
по умолчанию.
T* p[30] = { 0 };
, но вы не можете присвоить такое значение.
Я предпочитаю memset
memset (free_list, 0x0, 30 * sizeof (headerT *));
memset( &x, 0, sizeof x )
чтобы гарантировать запись правильного объема памяти.
init()
.