C ++ передача массивов в проблему метода - PullRequest
1 голос
/ 19 января 2010

Привет, у меня есть эта функция:

void vdCleanTheArray(int (*Gen_Clean)[25])
{

}

Я хотел знать, какой массив он принимает, и очистить его.

Извините, я немного разбираюсь в c ++, кто-то только что спросил меня.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 января 2010

Он принимает массив, объявленный как

int array[25];

, который должен быть передан "по указателю", то есть путем применения оператора & к массиву

vdCleanTheArray(&array);

Что касается того, какчтобы очистить это ... Как я понимаю, вышеупомянутая функция должна очистить это, и вы должны написать это, верно?Что ж, внутри функции вы получаете доступ к массиву с помощью оператора разыменования *, как в

(*Gen_Clean)[i]

, и вы просто «очищаете» его, как очищаете любой другой массив.Зависит от того, что вы подразумеваете под «ясно».Заполнить нулями?Если это так, то просто напишите цикл от 0 до 24 (или sizeof *Gen_Clean / sizeof **Gen_Clean), в котором каждый элемент будет установлен на ноль.

1 голос
/ 19 января 2010

void vdCleanTheArray (int (* Gen_Clean) [25]) может быть описана как «функция, принимающая указатель на массив из 25 целых чисел и ничего не возвращающий.»

Предполагая, что 'clear' означает, что вы устанавливаете все значения на 0, вы можете сделать это примерно так:

for (int i = 0; i < 25; i++) {
  (*Gen_Clean)[i] = 0;
}

Обратите внимание, что в C ++ размер массивов в стиле C не может быть изменен. Лучше использовать std :: vector, если вам нужен массив с изменяемым размером, или std :: array, если вам нужен массив фиксированного размера.

Если вы новичок в C ++, вы, вероятно, не должны использовать такую ​​функцию. Способ ввода первого параметра - это не то, что вы регулярно (или должны когда-либо) видеть в C ++.

Для тех, кто интересуется синтаксисом int (* Gen_Clean) [25], я полагаю, что он напечатан следующим образом, чтобы принудительно указывать, что передаваемый указатель указывает на массив из 25 дюймов, как обычно в C ++ ухудшается параметр int * Gen_Clean [25] 'в указатель на указатель, а не указатель на массив.

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