Я не нашел ответа ни на один из вопросов. Я передаю массив Integer в функцию. Теперь я хочу пройти через массив. Но как все работает на C, С++, просто используя arrayname.length, который дал количество элементов в массиве. Каким образом это можно найти? [NSArrayObject length] работает для типа NSArray, но я хочу его для int []. даже [XYZ count] работает... так что хотите еще один способ узнать это.
Длина массива в Objective C
Ответ 1
Нет ничего конкретного для Objective-C с массивом int. Вы использовали бы тот же метод, как если бы вы использовали C.
sz = (sizeof foo) / (sizeof foo[0]);
Ответ 2
Вы можете использовать [XYZ count] для получения длины массива
Ответ 3
Нет такой вещи, как array.length
в C. Массив int в Objective-C является точно такой же как массив int в C. Если он статически определен как int foo[5]
, тогда вы можете сделать sizeof(foo)
, чтобы получить размер, но только в той же функции foo
определяется в (для других функций это просто указатель int, а не массив как таковой). В противном случае не существует встроенного способа получения этой информации. Вам нужно либо передать размер вокруг, либо использовать значения дозорных (например, завершение "\ 0" в строках C, которые являются просто массивами char).
Ответ 4
А? В C нет такой вещи, как "arrayname.length". Массив примитивного типа, например int[]
, не имеет информации о длине, связанной с ним во время выполнения.
Ответ 5
Массив - это просто адрес памяти для начала блока памяти, который был выделен для массива. Чтобы фактически использовать его, вам нужно запомнить длину как-то после ее создания. Вы можете либо передать длину каждой функции, либо обернуть как массив, так и длину в другой структуре, передав эту структуру вокруг.
Ответ 6
[array count] похоже, что он работает проще всего в objective-c
Ответ 7
этот код можно использовать, когда общее количество элементов в массиве неизвестно.
main()
{
int a[]={1,2,3,4,5,6,7}
int i;
clrscr();
for (i=0;i<=((sizeof(a)/sizeof(int));i++)
{
puts(a[i]);
}
getch();
}
Ответ 8
В C. нет такой вещи, как arrayname.length
. Поэтому многие функции принимают пары аргументов, один аргумент с массивом и один аргумент с длиной массива. Наиболее очевидным для этого является основная функция. Вы можете найти эту функцию - все ваши проекты iPhone в файле с именем main.m
, это будет выглядеть примерно так:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Обратите внимание, что argv
agument - это v, или массив строк, а аргумент argc
- это c, то есть количество элементов, которые в этом массиве.
Вам нужно будет сделать то же самое для всех примитивных типов, это часть C Objective-C. Если вы останетесь в объектных частях с использованием NSArray или подклассов, это прекрасно, но все элементы должны быть объектами.
Ответ 9
выглядит как работа для NSMutableArray
. есть ли причина, по которой вам нужно работать с массивом C? если нет, рассмотрим NSMutableArray
.
Возможно, я ошибаюсь (поэтому, пожалуйста, исправьте меня, если я есть), но нет простого способа в C, чтобы получить размер int [] во время выполнения. вам нужно будет сделать что-то вроде создания структуры для хранения вашего массива и int, где вы можете сами отслеживать, сколько элементов в вашем массиве.
даже более интересный, вы можете сделать вашу структуру удержанием вашего массива и блока. то вы можете создать блок для отслеживания для вас.
но это скорее вопрос C, а не objective-c quesiton.
Ответ 10
Если вам нужен массив целых чисел, оберните их в объекты NSNumber и поместите их в NSArray.
То, что вы просите сделать, на самом деле не поддерживается в C, хотя есть метод на Mac, который вы могли бы попробовать (malloc_size):
Ответ 11
Вам следует попробовать следующий подход:
float ptArray[] = {97.8, 92.3, 89.4, 85.7, 81.0, 73.4, 53.0, 42.3, 29.4, 14.1};
int x = sizeof(ptArray)/sizeof(ptArray[0]);
NSLog(@"array count = %d", x);
Выход:
array count = 10