Download - Лекц 9(Заагч)
![Page 1: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/1.jpg)
Алгоритм програмчлалБагш: М.Цэцэнцэнгэл
![Page 2: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/2.jpg)
Си хэлийн заагч
![Page 3: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/3.jpg)
Си хэлийн заагч
![Page 4: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/4.jpg)
Заагч төрөл
Заагч (pointer) гэдэг нь компьютерын санах ойн нэгэн утгын заадаг объектыг хэлнэ.
Заагч хувьсагч нь санах ойн хаягийг хадгалдаг байна.
![Page 5: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/5.jpg)
Си хэлийн заагч
Заагчийн зарлагаа нь энгийн хувьсагчийн зарлагаатай адил боловч хувьчсагчийн урд * тэмдэгтэй байдгаараа ялгаатай.
int a; // engiin huvisagchint *a; // zaagch huvisagch
![Page 6: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/6.jpg)
Заагч
Заагч төрөл нь зөвхөн “unsigned int” утгыг л хадгалдаг. Тэрнээс биш урд нь тавьж байгаа өгөгдлийн төрөл өөр зориулалттай.
float *a; // adilint *b; // adil
![Page 7: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/7.jpg)
Хаяг авдаг Си хэлийн оператор
& оператор нь Си хэлэнд тухайн хувьсагчийн санах ойд байрлаж байгаа хаягийг авдаг.Бид өмнө нь scanf() функцэд ашиглаж байсан.
scanf(“%d”, &a);
![Page 8: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/8.jpg)
Заагчид утга олгоё!
int b;int *a;b = 17;a = &b; // b huvisagchiin hayg a zaagchid
// hadgalagdlaa
![Page 9: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/9.jpg)
Энэ үед оюутнууд
![Page 10: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/10.jpg)
Санах ойд юу болж байна?
![Page 11: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/11.jpg)
Заагч дахь утгыг авахдаа
int b;int *a;b = 17;a = &b;printf(“%u”, a); // 1462 gej hevleneprintf(“%d”, *a); // 17 gej hevlene
![Page 12: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/12.jpg)
Энэ үед оюутнууд
![Page 13: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/13.jpg)
Цуваа ба заагч
int a[] = {10,20,30,40,50};int *p;p = &a;printf(“%d\n”, *p); // 10printf(“%d\n”, *(p+1)); // 20printf(“%d\n”, *(p+2)); // 30
![Page 14: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/14.jpg)
Энэ үед санах ойд
Хаяг 2686712 2686716 2686720 2686724
Утга 10 20 30 40
a
printf(“%u”, a); // 2686712printf(“%u”, p); // 2686712
Цувааны хувьсагч нь цуваа эхэлж байгаа санах ойн хаягийг хадгалж байдаг.
p p+1 p+2 p+3
![Page 15: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/15.jpg)
Бодлого
Хоёр хувьсагчийн утгыг хооронд нь соль.a = 5;b = 7; байсныг a = 7;b = 5; болго.
![Page 16: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/16.jpg)
Солих бодлогын шийдэл 1
int a = 5;int b = 7;a = a + b; // b = 7, a = 5 + 7 = 12b = a - b; // a = 12, b = 12 - 7 = 5a = a - b; // b = 5, a = 12 - 5 = 7
![Page 17: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/17.jpg)
Солих бодлогын шийдэл 2
int a = 5;int b = 7;int tmp;tmp = a;a = b;b = tmp;
![Page 18: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/18.jpg)
Солих үйлдлийг функц болгоё
void swap(int a, int b) {int tmp;tmp = a;a = b;b = tmp;
}
![Page 19: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/19.jpg)
swap функцээ дуудъя
void main(){
int a = 5;int b = 7;swap(a,b);printf(“a=%d b=%d”, a, b);
}
![Page 20: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/20.jpg)
Асуудлыг шийдье
void swap(int *a, int *b){
int tmp;tmp = *a;*a = *b;*b = tmp;
}
![Page 21: Лекц 9(Заагч)](https://reader036.vdocuments.mx/reader036/viewer/2022062304/55b04a9d1a28ab61688b4687/html5/thumbnails/21.jpg)
swap функцээ дуудъя
void main(){
int a = 5;int b = 7;swap(&a, &b);printf(“a=%d b=%d”, a, b);
}