указатель на массив указателей массивов - PullRequest
2 голосов
/ 18 января 2012

Я искал свою проблему, но не нашел ее.

У меня есть объявление массива указателей

int *Blocks[] = {Block1,Block2,Block3,Block4};

Блоки - это массивы длиной 50.

Теперь у меня есть цикл for, я хочу пошагово инициализировать поля

for(int i=0;i<50;++i)
{
*(Blocks[section])+i = 1;
}

Один должен быть переменной позже. Правильно ли это или какое правильное выражение для получения поля массива выбранного раздела?

Спасибо за каждый ответ

Ответы [ 3 ]

4 голосов
/ 18 января 2012

Нет, эта линия не совсем правильная. Ниже приведено (обратите внимание на положение скобок):

*(Blocks[section]+i) = 1;

или, что эквивалентно, но более кратко:

Blocks[section][i] = 1;
2 голосов
/ 18 января 2012

То, что вы написали, почти работает, вы можете сделать:

*(Blocks[section] + i) = 1;

Но лучшим решением было бы использовать синтаксический сахар C и написать:

Blocks[section][i] = 1;
0 голосов
/ 18 января 2012

Вы можете установить init эти поля как

*(Blocks[section]+i) = 1;

и, возможно, вам следует распределить достаточно памяти, прежде чем начинать блоки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...