2013-03-30 3 views
1

Мне было интересно, возможно ли в C инициализировать каждый элемент 2D-массива с тем же значением. Я заявляю о своем 2D массив так:Инициализировать 2D-массив все с одинаковым значением?

char arry[x][y]; 

, и я хочу, чтобы каждый элемент Arry [0 ... х] [0 ... у] содержит символ звездочки. Есть ли простой способ сделать это без циклов? Я думаю, что-то вроде:

char arry[x][y] = '*' 

Но я знаю, что это не работает.

+4

Совет: используйте [memset] (http://www.cplusplus.com/reference/cstring/memset/). Он не инициализирует массив, а устанавливает все члены в нужное значение в одном объявлении, я считаю, что это то, что вы хотите. –

+0

Почему вы хотите избежать цикла. Программирование довольно сложно без петель. –

ответ

0

Это возможно до тех пор, как «то же самое значение» равно нулю

char arry[x][y] = { 0 }; 

выше будет инициализировать все элементы массива с нулями.

Для любого другого значения это невозможно с помощью синтаксиса инициализации (если вы не хотите явно указать такое же значение для каждого элемента массива). Вы либо будете писать свой собственный цикл инициализации, либо использовать предварительно написанную функцию.

+0

OP специально указывает конкретное значение, а именно '*'. –

+1

@Alok Save: Оба типа элементов '' * ''и' char' как массив * являются просто * примером *. OP говорит «например». Сам вопрос не говорит о '*' и/или 'char'. Итак, 'memset' на самом деле не является правильным ответом. – AnT

+0

Извините, может быть, я не был чист. Я хочу инициализировать все это до '*' – samturner

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