CGFloat newArray[2] = {
0.0f, 1.0f,
};
Индексы массива начинаются с 0. pointer[1]
печатает второй элемент в массиве, а не первый. pointer[2]
находится вне конца массива.
CGFloat newArray[2] = {0,0};
newArray[0]; // this is the 1st item
newArray[1]; // this is the 2nd item
newArray[2]; // this is nonsense.
Обратите внимание, что если вы попытаетесь передать куда-то newArray
с намерением использовать его позже, это будет плохо. newArray
находится в стеке и будет уничтожен при уничтожении области действия.
Если вам нужна функция, которая возвращает массив из двух чисел с плавающей запятой, вы должны сделать:
CGFloat *two_of_these() {
CGFloat *newArray = malloc(2 * sizeof(CGFLoat));
newArray[0] = 42.0;
newArray[1] = 59.4;
return newArray;
}
Просто убедитесь и позвоните free
на это возвращаемое значение позже. Обратите внимание, что очень редко можно выделить что-то такое маленькое. Как правило, это будет структура, которая возвращается напрямую. См. CGPoint
, CGRect
, NSRange
и т. Д ....