2013-04-29 4 views
0

Я немного смущен одним из своих ответов на викторину, и я надеялся, что кто-нибудь может дать мне объяснение. Вопрос:Array confusion - Quiz

У вас есть два массива с именем b и c. Вы вызываете статический метод, который меняет значение в компоненте k одного массива со значением в компоненте k другого массива. Этот метод swap не упоминает ни одну переменную, объявленную вне метода, кроме ее параметров. Какой из следующих вызовов методов мог бы выполнить это?

Ответ: своп (с, Ь, к)

Я очень смущен, почему это ответ. Любая помощь будет принята с благодарностью!

+0

Какие еще варианты? – user295691

ответ

0

Скорее всего, декларация swap имеет c и b, которые передаются по ссылке. Это означает, что вся функция должна проверять, чтобы убедиться, что есть достаточное количество элементов (sizeof(c) >= k && sizeof(b) >= k или что-то подобное), прежде чем выполнять фактический обмен.

Также: b, c и k определены в самом вопросе.

+0

И, возможно, выделите временную переменную, если вы не можете делать одновременное вычисление. 't = c [k]; c [k] = b [k]; b [k] = t' – Felipe

0

он меняет элемент на индекс k для b и c. k-1 заменяет элемент, предшествующий k, и 0 меняет первый элемент в массиве

0

Поскольку swap() не может ссылаться ни на что вне себя, все необходимые ссылки и информация должны передаваться как параметры.

Ответ swap (c, b, k) является правильным, так как он дает ссылку на оба массива и какой индекс подкачки. Вы просто не можете выполнить задачу, передавая меньшее количество параметров.

Если бы вы только своп(), своп (к) или своп (с, б), то метод будет нужна информация внешних по отношению к себе, чтобы выполнить поставленную задачу.