Кроме того, в дополнение к тому, что сказал @livo, ваше состояние не очень чистое. Вам лучше написать:
if (Input.GetMouseButtonDown (1)){
if(isHiden){
// your code
}else{
// your code
}
}
они - точно то же.
someArray[i]
средства точно
*(someArray + i)
где someArray во втором случае является указателем на ячейку памяти. Точно так же
&someArray[i]
средства точно
(someArray + i)
В обоих этих случаях условия являются указателями на ячейки памяти.
Это может быть значительно, если SomeFunction
макрос и берет "sizeof"
из одного из его аргументов, потому что sizeof(tmpry)
может не обязательно быть равно sizeof(&tmpry[0])
.
Иначе, как другие указали, они - точно то же.
Эти два эквивалентны, и я думаю SomeFunction (tmpry); более читаемо.
Раздел FAQ по программированию , посвященный массивам и указателям , решает эту проблему ( и много других общих вопросов и путаницы в Си.
Как все остальные сказали, эти две нотации эквивалентны.
Я обычно использовал бы более простой, если нет множественные вызовы как это:
SomeFunction(&tmparry[0]);
SomeFunction(&tmparry[10]);
SomeFunction(&tmparry[NNN]);
Где идеально все константы (магические числа) были бы перечислением (или #define
) константы.
Декларация
int a [10]; int * pa;
Существует одно различие между массивом и указателем, которое необходимо учитывать. Указатель является переменной, поэтому pa = a и pa ++ допустимы. Но имя массива не является переменной; конструкция типа a = pa и a ++ недопустима
. В качестве параметров формата в определении функции, char s [] а также символ * с
От: 2-й язык программирования C , стр. 99-100
Оба являются одними и теми же, хотя второй выглядит хорошим и разъясняет намерение передать массив функции. Но как SomeFunction знает размер передаваемого массива, он всегда принимается как 40? Я чувствую, что лучше передать размер также как параметр в SomeFunction.
Эти два варианта являются эквивалентными и передающими как это
SomeFunction(tmpry);
инструмент для очистки взглядов.