Դաս 14.4 Objectiv C։ Ցուցիչը զանգվածում

0

Հնարավոր է այս դասը բարդ թվա Ձեզ մինչև հաջորդ՝ Ցուցիչներ բաժնին ծանոթանալը:

Սակայն, եկե՛ք շարունակենք՝ ենթադրելով, որ Դուք ունեք որոշակի պատկերացում ցուցիչների վերաբերյալ: Զանգվածի անվանումը constant pointer է դեպի զանգվածի առաջին էլեմենտը: Այսպիսով, հայտարարումը կլինի հետևյալ կերպ՝

double balance[50];

balance-ը pointer է դեպի &balance[0], որը balance զանգվածի առաջին էլեմենտի  հասցեն է:

double *p;
double balance[10];

p = balance;

Լիովին ճիշտ է օգտագործել զանգվածների անվանումները որպես կոնստանտ pointer-ներ, և հակառակը: Այդպիսով, *(balance + 4) լեգիտիմ տարբերակ է balance[4]-ի տվյալների հասնելու համար:

Հենց որ Դուք տեղադրում եք առաջին էլեմենտի հասցեն p-ում, Դուք կարողանում եք հասնել զանգվածի էլեմենտներին՝ օգտագործելով *p, *(p+1), *(p+2) և այլն: Ահա նման օրինակ՝

#import <Foundation/Foundation.h>

int main ()
{
   /* an array with 5 elements */
   double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
   double *p;
   int i;

   p = balance;
 
   /* output each array element's value */
   NSLog( @"Array values using pointer\n");
   for ( i = 0; i < 5; i++ )
   {
       NSLog(@"*(p + %d) : %f\n",  i, *(p + i) );
   }

   NSLog(@"Array values using balance as address\n");
   for ( i = 0; i < 5; i++ )
   {
       NSLog(@"*(balance + %d) : %f\n",  i, *(balance + i) );
   }
 
   return 0;
}

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

2013-09-14 01:36:57.995 demo[31469] Array values using pointer
2013-09-14 01:36:57.995 demo[31469] *(p + 0) : 1000.000000
2013-09-14 01:36:57.995 demo[31469] *(p + 1) : 2.000000
2013-09-14 01:36:57.995 demo[31469] *(p + 2) : 3.400000
2013-09-14 01:36:57.995 demo[31469] *(p + 3) : 17.000000
2013-09-14 01:36:57.995 demo[31469] *(p + 4) : 50.000000
2013-09-14 01:36:57.995 demo[31469] Array values using balance as address
2013-09-14 01:36:57.995 demo[31469] *(balance + 0) : 1000.000000
2013-09-14 01:36:57.995 demo[31469] *(balance + 1) : 2.000000
2013-09-14 01:36:57.995 demo[31469] *(balance + 2) : 3.400000
2013-09-14 01:36:57.995 demo[31469] *(balance + 3) : 17.000000
2013-09-14 01:36:57.995 demo[31469] *(balance + 4) : 50.000000

Վերոնշյալ օրինակում p-ն pointer է double-ին, ինչը նշանակում է, որ այն կարող է պահպանել double type փոփոխականի հասցե: Հենց որ մենք ունենք հասցե p-ում, *p-ն մեզ տալիս է այդ հասցեի համար արժեք, ինչպես որ տեսանք վերոնշյալ օրինակում:

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

Share.