Длина массива в Objective C

Я не нашел ответа ни на один из вопросов. Я передаю массив Integer в функцию. Теперь я хочу пройти через массив. Но как все работает на C, С++, просто используя arrayname.length, который дал количество элементов в массиве. Каким образом это можно найти? [NSArrayObject length] работает для типа NSArray, но я хочу его для int []. даже [XYZ count] работает... так что хотите еще один способ узнать это.

Ответ 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.

Ответ 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