May 3, 2020

11. Кластар мен объектілер

Көрсеткіш кәдімгідей айнымалы, бірақ көрсеткіш жадта айнымалының адресін сақтайды, ал айнымалы мәнді сақтайды. Көрсеткіш жұлдызша (*) символымен белгіленеді де, айнымалының алдында жазылады. Көрсеткіш көбінесе типті сипаттауда пайдаланады.

Мысалдар:

int *x, *y;

char *ch;

float *y,z;

printf (“%d, *x”);

Жоғарыда z айнымалысы көрсеткіш ретінде сипатталмаған, ал x,y,ch айнымалылары-көрсеткіштер. Егер олар оператор ішінде кездессе, сәйкес типтік айнымалылар да көрсеткіштер түрінде сипатталуы тиіс.

Printf операторындағы сияқты *x айнымалысының оқылуы “x көрсеткішінің мәні”. Айнымалы көрсеткішін & символымен белгілеуге де болады. Мысалы, (1)-программаның scanf операторында пайдаланылған (&x). Оның оқылуы: “ x айнымалысының адресі”

Негізгі типте көрсеткіш түрінде сипатталған айнымалыға компилятор айнымалы адресін тағайындайды. Мысалы, негізгі тип Int болса, көрсеткішке 2 байттық, char болса, 1 байттық адрес бөліп қояды. Компилятор көрсеткіш арқылы белгіленген айнымалы мәнін жадтан тезірек табады.

Жалпы, * операторы айнымалының алдында тек екі жағдайда жазылады: осындай айнымалыны жариялау алдында және ол көрсеткен мәнді пайдаланып алу кезінде.

Массивті де көрсеткіш енгізіп сипаттауға болады, мысалы: char *ms [12]; мұндағы сипатталған символдық ms массивінің элементтеріне 12 көрсеткіш орнатылған.

Айнымалы көрсеткіш түрінде сипатталса, scanf операторының сәйкес аргументіне көрсеткіш белгісі қосылмайды да, программада меншіктеу операторы бар болса, ол операторға енгізілген сәйкес айнымалы алдында жазылады.

Мысалы: *x, *y көрсеткіштері пайдаланылған y=3(x+2y) функциясының мәнін есептеу программасы:

# Include <stdio.h>
      main()                                    
      {      
          float u, *x, *y;  
          printf (“x,y=?”);
          scanf(“%f %f”, x, y);
          u=3* (*x+2* *y);
          printf (“u=%f”,u);
          getch (); return 0;
}

Мысал1. Массив сілтемесін инициалдау және оны қолдану.

Шешуі:

#include <stdio.h>
void main(void) {
  {
    char * x[] = {
      “
      123456”,
      ”asdfgh”,
      ”1 q2w3e4r5t”
    };
    int i, n = 3;
    /*бүтін типті айнымалылар
    және оны инициалдау*/
    for (i = 0; i < n; i++) printf(“\n % s\ n”, x[i]);
    for (i = 0; i < n; i++) printf(“\n % s\ n”, *(x + i));
  }
}
char ** x, * y[] = {
  “
  98765”,
  ”87654”,
  ”7654321”,
  ”aaaaaaaa”,
  NULL
};
x = y;
while ( * x)
  printf(“\n % s\ n”, * x++);
}
}

Тапсырма

1.Клавиатурадан енгізілген бүтін элементтерден тұратын массивтің ең кіші элементін табатын программа жазу керек. Массив элементтеріне қол жеткізу үшін сілтемені қолданыңыз.

2. Қатардан сөзді белгілеп, оны массивке жазу және сөздер массивін шығару.

3.Күрделі сипаттауды қолдану.

4. Сілтемелерге сілтемелерді қолдану.

5. Сілтемелер массивін инициалдау

6. Қатарды енгізіп, одан сөзді белгілеп алып массивке жазу керек, сонан соң,сөздерден бір қатарды жинақтап шығару керек.