2012-01-18 4 views
2

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

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

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

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

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

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

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

Благодаря каждый ответ

ответ

4

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

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

или, что то же самое, но более лаконично:

Blocks[section][i] = 1; 
2

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

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

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

Blocks[section][i] = 1; 
+0

спасибо вам обоим! Блоки [секция] [i] = 1; это то, что я искал – fnobbi

-1

вы можете установить, что инициализации поля, как

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

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

Смежные вопросы