Я не нашел ответа ни по одному из заданных вопросов. Я передаю целочисленный массив функции. Теперь я хочу пройти через массив. Но как все работает в C, C++, просто используя arrayname.length, который дал количество элементов в массиве. Каким образом это можно найти? [NSArrayObject length] работает для типа NSArray, но я хочу его для int []. нет даже [XYZ счет] работы .... так хочется другой способ узнать это.Длина массива в объекте C
ответ
Нет ничего особенного для Objective-C с массивом ints. Вы должны использовать ту же технику, как если бы вы использовали C.
sz = (sizeof foo)/(sizeof foo[0]);
А? В C нет такой вещи, как «arrayname.length». Массив примитивного типа, такого как int[]
, не имеет информации о длине, связанной с ним во время выполнения.
Там нет такого понятия, как array.length
в C. An целочисленный массив в Objective-C является точно такой же как целочисленный массив в C. Если он статически определен как int foo[5]
, то вы можете сделать sizeof(foo)
, чтобы получить размер - но только в той же функции foo
определяется в (к другим функциям, это всего лишь указатель int, а не массив как таковой). В противном случае не существует встроенного способа получения этой информации. Вам нужно либо передать размер вокруг, либо использовать значения дозорных (например, завершение «\ 0» в строках C, которые являются просто массивами char).
Я ищу Длина т.е. числа элементов в целочисленном массиве. и не sizeof.as wen id o sizeof просто возвращает меня sizeof int – Darpan
Как я уже сказал, нет. 'sizeof()' работает для массивов статического размера, как пример, который я дал выше, в той же функции, в которой они определены. Это самый близкий C, который поддерживает это. – Chuck
Массив в основном только адрес памяти в начале блока памяти, который был выделен для массива. Чтобы фактически использовать его, вам нужно запомнить длину как-то после ее создания. Вы можете либо передать длину вокруг каждой функции, либо обернуть как массив, так и длину в другой структуре, передав эту структуру вокруг.
выглядит как работа для NSMutableArray
. есть ли причина, по которой вам нужно работать с массивом C? если нет, рассмотрите NSMutableArray
.
Возможно, я ошибаюсь (поэтому, пожалуйста, исправьте меня, если я есть), но в C нет простого способа получить размер int [] во время выполнения. вам нужно будет сделать что-то вроде создания структуры для хранения вашего массива и int, где вы сможете отслеживать, сколько элементов в вашем массиве самостоятельно.
Даже любитель, вы можете сделать вашу структуру удержанием вашего массива и блока. то вы можете создать блок для отслеживания.
, но это скорее вопрос C, а не объектив-c quesiton.
Если вам нужен массив целых чисел, заверните их в объекты NSNumber и поместите их в NSArray.
Что вы просите сделать, это на самом деле не поддерживается хорошо в C, хотя есть метод на макинтош вы могли бы попробовать (malloc_size):
Там нет такого понятия, как arrayname.length
в C. Поэтому многие функции принимают пары аргументов, один аргумент с массивом и один аргумент с длиной массива. Наиболее очевидным для этого является основная функция.Вы можете найти эту функцию всех ваших 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 или подклассов отлично работают, но для всех элементов требуются все объекты.
Этот код может использоваться, если общее количество элементов в массиве неизвестно.
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();
}
4 пробела перед строкой текста говорит сайту использовать форматирование кода. Чтобы быстро поставить 4 пробела перед многими строками кода, выберите все строки и нажмите кнопку ** {} **. Я исправил его для вас, чтобы сделать его доступным для чтения. –
[число массива], это, кажется, работает самый простой в Objective-C
Вы можете использовать [число XYZ], чтобы получить длину массива
Вопрос о массиве C, где нет счетчика. – Vive
- 1. Длина массива в объекте не соответствует
- 2. Длина массива в объекте JSON возвращается неопределенные
- 3. длина массива в C++
- 4. Длина массива в C
- 5. Длина массива символов - C
- 6. C Длина массива (заполняется)
- 7. длина модифицирование массива в C++
- 8. Длина массива char в C
- 9. длина массива символов в C
- 10. Размер массива (длина) в C#
- 11. Сортировка массива в объекте-c
- 12. попытка массива массива в объекте c
- 13. Длина массива в параметрах массива
- 14. Почему длина не отображается как ключ в объекте массива?
- 15. Указатель массива в c/объекте c
- 16. Длина массива в HLSL?
- 17. длина массива во время выполнения в C++
- 18. прибудете Длина массива класса в C#
- 19. заполнение массива в объекте в C#
- 20. Длина массива
- 21. Длина массива
- 22. Длина массива в Salesforce
- 23. Длина массива в Perl
- 24. длина массива в node.js
- 25. Длина массива в массиве
- 26. Длина массива в процессе?
- 27. длина массива в mips
- 28. Длина массива в Intellisense
- 29. длина массива в Javascript
- 30. Длина 2D-массива [i]
Я пробовал это ... я видел это для 2-мерного массива, но мой массив одномерен ... как просто int foo [], так что я делаю sizeof (foo)/sizeof (foo [0]), он возвращает 4/4 ie 1 ..i уже пробовал ... но не повезло .. есть ли другой способ? Спасибо – Darpan
@Darpan: Это работает только тогда, когда вы объявляете int foo [5], а не int foo []. – mouviciel
согласен с mouviciel, это не получится, что вы хотите. – pxl