Передача массивов в качестве аргументов функций в Objective-C

Опубликовано: 9 Января, 2023

Каждый язык программирования имеет структуру данных, которая используется для хранения элементов. Точно так же Objective-C также поддерживает структуру данных, известную как массив. Массив используется для хранения элементов одних и тех же типов данных в последовательной коллекции фиксированного размера. В массиве вам не разрешено хранить элементы разных типов в одном и том же массиве, что означает, что вы не можете хранить целые числа в массиве строковых типов. Этот первый элемент массива хранится по младшему адресу 0, а последний элемент хранится по старшему адресу. В Objective-C нам разрешено передавать массив в функцию. Чтобы передать массив (одномерный или многомерный), мы должны объявить в функции формальный параметр. Таким образом, чтобы объявить формальный параметр в функции, мы можем использовать один из следующих методов.

Способ 1

Чтобы передать массив функции, мы можем объявить формальный параметр как указатель.

Синтаксис:

-(void) FunctionName(int*)parameterName{

// Body of the function

}

Пример:

ObjectiveC




// Objective-C program to pass an array as a parameter in the function
#import <Foundation/Foundation.h>
  
// Creating an interface
@interface GFG:NSObject
  
// Function declaration 
-(int) StudentMarks:(int *)ExameMarks arrSize: (int) s;
  
@end
  
// implemeneting the interface
@implementation GFG
  
// Creating a function which takes array and its size as a argument
// Here we use pointer to pass array
-(int)StudentMarks:(int *)ExameMarks arrSize: (int) s{
  
    // Creating variables
    int result = 0;
    int i;
      
    // Finding the total sum of the marks
    for(i = 0; i < s; i++){
        result += ExameMarks[i];
    }
    return result;
}
  
@end
  
// Driver code
int main ()
{
  
    // Creating array of integer type
    int subjectmarks[6] = {45, 78, 56, 87, 56, 66};
    double totalMarks;
      
    // Creating object
    GFG *obj = [[GFG alloc]init];
      
    // Calling the function with array and size as a argument
    totalMarks = [obj StudentMarks:subjectmarks arrSize: 6];
      
    // Displaying the result
    NSLog(@"Total Marks: %f", totalMarks);
      
    return 0;
}

Выход:

Total Marks: 388.000000

Объяснение: В приведенном выше коде мы находим общую сумму заданных оценок. Итак, чтобы сделать это, сначала мы объявляем функцию с именем StudentMarks в интерфейсе GFG. Эта функция принимает в качестве аргумента массив, здесь параметр передается как указатель. Затем мы реализуем функцию, и эта функция возвращает общую сумму, складывая все оценки заданных предметов (Сумма = 45 + 78 + 56 + 87 + 56 + 66). Теперь в основной функции мы вызываем функцию StudentMarks, передавая ей массив, названный в качестве предметных оценок, и отображаем окончательный результат.

Способ 2

Чтобы передать массив в функцию, мы можем объявить формальный параметр как массив с размером массива.

Синтаксис:

-(void) FunctionName(int[arraySize])parameterName{

// Body of the function

}

Пример:

ObjectiveC




// Objective-C program to pass an array as a parameter in the function
#import <Foundation/Foundation.h>
  
// Creating an interface
@interface GFG:NSObject
  
// Function declaration 
-(int) StudentMarks:(int [6])ExameMarks;
  
@end
  
// implemeneting the interface
@implementation GFG
  
// Creating a function which takes array as a argument
-(int)StudentMarks:(int[5])ExameMarks{
  
    // Creating variables
    int result = 0;
    int i;
      
    // Finding the total sum of the marks
    for(i = 0; i < 6; i++){
        result += ExameMarks[i];
    }
    return result;
}
  
@end
  
// Driver code
int main ()
{
  
    // Creating array of integer type
    int subjectmarks[6] = {45, 78, 56, 87, 56, 66};
    double totalMarks;
      
    // Creating object
    GFG *obj = [[GFG alloc]init];
      
    // Calling the function with array as a argument
    totalMarks = [obj StudentMarks:subjectmarks];
      
    // Displaying the result
    NSLog(@"Total Marks: %f", totalMarks);
      
    return 0;
}

Выход:

Total Marks: 388.000000

Объяснение: В приведенном выше примере мы собираемся найти общую сумму заданных оценок. Итак, чтобы сделать это, сначала мы объявляем функцию с именем StudentMarks в интерфейсе GFG. Эта функция принимает массив в качестве аргумента. Затем мы реализуем функцию, и эта функция возвращает общую сумму, складывая все оценки заданных предметов (Сумма = 45 + 78 + 56 + 87 + 56 + 66). Теперь в основной функции мы вызываем функцию StudentMarks, передавая ей массив, названный в качестве предметных оценок, и отображаем окончательный результат.

Способ 3

Чтобы передать массив в функцию, мы можем объявить формальный параметр как массив без размера.

Синтаксис:

-(void) FunctionName(int[])parameterName{

// Body of the function

}

Пример:

Выход:

Total Marks: 388.000000

Объяснение: В приведенном выше коде мы собираемся найти общую сумму заданных оценок. Итак, чтобы сделать это, сначала мы объявляем функцию с именем StudentMarks в интерфейсе GFG. Эта функция принимает в качестве аргумента массив без размера. Затем мы реализуем функцию, и эта функция возвращает общую сумму, складывая все оценки заданных предметов (Сумма = 45 + 78 + 56 + 87 + 56 + 66). Теперь в основной функции мы вызываем функцию StudentMarks, передавая в нее массив с именем предметных оценок вместе с другим аргументом, который называется arrSize. И отобразите окончательный результат, который равен 388.