Դաս 14.2 Objectiv C։ Զանգվածը որպես ֆունկցիայի արգումնետ

0

Եթե ցանկանում եք փոխանցել միաչափ զանգված որպես ֆունկցիայի արգումենտ, ապա պետք է հայտարարեք ֆունկցիայի ֆորմալ պարամետրը հետևյալ երեք տարբերակներից մեկով: Ընդ որում դրանք երեքն էլ հայտնում են  compiler-ին, որ  ստացվելու է  integer pointer: Նույն կերպ Դուք կարող եք փոխանցել բազամաչափ զանգված որպես ֆորմալ պարամետրեր:

Տարբերակ 1

Ֆորմալ պարանետրերը՝ որպես pointer: Դուք կծանոթանաք  pointer-ին հաջորդ դասին:

- (void) myFunction(int *) param
{
.
.
.
}

Տարբերակ -2

Ֆորմալ պարամետրերը՝ որպես sized զանգված՝

- (void) myFunction(int [10] )param
{
.
.
.
}

Տարբերակ 3

Ֆորմալ պարամետրերը՝ որպես unsized զանգված

-(void) myFunction: (int []) param
{
.
.
.
}

Oրինակ՝

Եկե՛ք պատկերացնենք հետևյալ ֆունկցիան, որը վերցնում է զանգվածը որպես argument մել այլ argument-ի հետ միասին և, հիմնվելով փոխանցված argument-ների վրա, վերադարձնում է զանգվածով անցած թվերի միջինը՝

-(double) getAverage🙁int []) arr andSize🙁int) size
{
  int    i;
  double avg;
  double sum;

  for (i = 0; i < size; ++i)
  {
    sum += arr[i];
  }

  avg = sum / size;

  return avg;
}

Այժմ, եկե՛ք կանչենք վերոնշյալ ֆունկցիան՝

#import <Foundation/Foundation.h>
 
@interface SampleClass:NSObject

/* function declaration */
-(double) getAverage🙁int []) arr andSize🙁int) size;

@end

@implementation SampleClass

-(double) getAverage🙁int []) arr andSize🙁int) size
{
  int    i;
  double avg;
  double sum =0;

  for (i = 0; i < size; ++i)
  {
    sum += arr[i];
  }

  avg = sum / size;

  return avg;
}

@end

int main ()
{
   /* an int array with 5 elements */
   int balance[5] = {1000, 2, 3, 17, 50};
   double avg;
   
   SampleClass *sampleClass = [[SampleClass alloc]init];
   /* pass pointer to the array as an argument */
   avg = [sampleClass getAverage:balance andSize: 5] ;
 
   /* output the returned value */
   NSLog( @"Average value is: %f ", avg );
    
   return 0;
}

Երբ վերոնշյալ կոդը կոմպիլացվում և իրականացվում է, այն տալիս է հետևյալ արդյունքը՝

2013-09-14 03:10:33.438 demo[24548] Average value is: 214.400000

Ինչպես տեսնում եք՝ զանգվածի երկարությունը ոչինչ չի փոխում քանի դեռ ֆունկցիան աշխատում է, քանի որ Objective-C-ն չի դնում  սահմաններ ֆորմալ պարամետրերի ստուգման համար:

Հարգելի ընթերցող, խնդրում ենք չմոռանալ like տալ մեր ֆեյսբուքյան էջին, քանի որ նորությունների մեծ մասը առաջինը տեղադրվում է հենց այնտեղ։ Ինչպես նաև հետևեք մեզ այլ սոցիալական ցանցերում և, իհարկե, գրանցվեք մեր բլոգում։

Share.