Я определенно подверг бы графику управлению версиями. Разность не могла бы быть очень полезной из различного инструмента как diffmerge, но Вы можете все еще контроль две версии диаграммы и просматривать их рядом для наблюдения различий.
я не вижу оснований, почему результирующая графика не должна быть сохранена в той же системе управления версиями, которую используют кодеры. Однако при создании графики с помощью файлов PSD или файлов PDN, Вы могли бы хотеть создать отдельный репозиторий для тех, поскольку у них есть различный контекст к фактическому концу jpeg или gif, который производится и развертывается с разработанным приложением.
Когда вы используете тип char x []
вместо char * x
без инициализации , вы можете считать их одинаковыми. Вы не можете объявить новый тип как char x []
без инициализации, но вы можете принять их как параметры функций. В этом случае они такие же, как указатели.
Когда вы используете тип char x []
вместо char * x
при инициализации , они полностью отличаются на 100%.
Пример того, как ] char x []
отличается от char * x
:
char sz[] = "hello";
char *p = "hello";
sz
на самом деле является массивом, а не указателем.
assert(sizeof(sz) == 6);
assert(sizeof(sz) != sizeof(char*));
assert(sizeof(p) == sizeof(char*));
Пример того, как char x []
совпадает с char * x
:
void test1(char *p)
{
assert(sizeof(p) == sizeof(char*));
}
void test2(char p[])
{
assert(sizeof(p) == sizeof(char*));
}
Стиль кодирования для перехода к функциям:
На самом деле не имеет значения, какой один ты делаешь. Некоторые люди предпочитают char x []
, потому что ясно, что вам нужен массив, а не адрес отдельного элемента.
Обычно это уже ясно, потому что у вас будет другой параметр для длина массива.
Дополнительная литература:
См. Этот пост под названием Массивы - это не то же самое, что указатели!
Стандарт C ++ 13.1.3
- Разные объявления параметров только в указателе * вместо массива [] эквивалентны. То есть массив декларация скорректирована, чтобы стать объявление указателя (8.3.5). Только второе и последующие измерения массива важны для типов параметров (8.3.4). [Пример:
int f(char*);
int f(char[]); // same as f(char*);
int f(char[7]); // same as f(char*);
int f(char[9]); // same as f(char*);
int g(char(*)[10]);
int g(char[5][10]); // same as g(char(*)[10]);
int g(char[7][10]); // same as g(char(*)[10]);
int g(char(*)[20]); // different from g(char(*)[10]);
—конечный пример]
Между вашими двумя кодами нет никакой разницы, за исключением, очевидно, разного стиля. В обоих случаях массив передается по ссылке, а не по значению, поскольку параметры функции type * x
и type x []
семантически одинаковы.
Что касается стиля, я высуну шею и скажу, что int * arrayOfInt лучше. Какой бы синтаксис вы ни использовали, вы передаете указатель, и тип должен прояснить это.
Это только мое мнение.
Эти два выражения эквивалентны. Каждый из них вычисляет адрес первого элемента массива arrayOfInt.