C lects (7)

1,197 views
1,084 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,197
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
47
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

C lects (7)

  1. 1. Заагч Хичээл 8
  2. 2. Pointer - Заагч <ul><li>Заагч нь санах ойн хаяг хадгалах хувьсагч </li></ul><ul><ul><li>P нь C хувьсагчийг зааж байна гэдэг </li></ul></ul>C 7 3 4 … … 173 172 174 175 176 177 178 179 180 181 174 3 4 … … P 833 832 834 835 836 837 838 839 840 841
  3. 3. Заагч хувьсагчийг зарлах <ul><li>Заагч –г зарлахдаа хувьсагчийн өмнө нь * тэмдэг бичиж өгдөг . </li></ul>type * variable_name;
  4. 4. Заалгах <ul><li>& энэ оператор нь хувьсагчийн хаягийг буцаадаг. </li></ul><ul><li>Жишээ нь : P = &C; </li></ul><ul><li>C –н хаягийг з аагч хувьсагч P -д оноолоо гэсэн үг. Тэгээд P нь C -г зааж байна гэдэг </li></ul><ul><li>Заагч ийг хэвлэхдээ , %p формат ашиглана . </li></ul>
  5. 5. Заалгах <ul><li>int C; </li></ul><ul><li>int *P; /* Заагч аар зарлах */ </li></ul><ul><li>C = 7; </li></ul><ul><li>P = &C; </li></ul>C 7 3 4 … … 173 172 174 175 176 177 178 179 180 181 174 3 4 … … P 833 832 834 835 836 837 838 839 840 841
  6. 6. Хаягийн дотор орох <ul><li>* операторыг ашиглана. </li></ul><ul><li>Заагчийн зааж байгаа зүйл рүү хандах боломжийг олгоно </li></ul><ul><li>Хэлбэр нь : *P = 7 ; </li></ul><ul><li>C ( P –н зааж байгаа хаяг дахь ) байгаа газар 5 -г онооно </li></ul>
  7. 7. Хаягийн дотор орох <ul><li>printf(“%d”, *P); /* Prints out ‘7’ */ </li></ul><ul><li>*P = 177; </li></ul><ul><li>printf(“%d”, C); /* Prints out ‘177’ */ </li></ul><ul><li>P = 177; /* Энэ бол буруу шүү !! */ </li></ul>C 7 3 4 … … 173 172 174 175 176 177 178 179 180 181 174 3 4 … … P 833 832 834 835 836 837 838 839 840 841 177 177
  8. 8. Жишээ
  9. 9. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 1 2 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 … 564 772
  10. 10. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 1 2 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 120 564 772
  11. 11. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 1 2 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 120 564 772
  12. 12. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 1 1 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 120 564 772
  13. 13. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 1 1 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 120 564 772
  14. 14. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 0 1 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 120 564 772
  15. 15. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 0 1 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 120 564 772
  16. 16. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 0 1 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 372 564 772
  17. 17. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 0 1 364 5 6 7 Z[0] Z[1] Z[2] 120 248 364 368 372 372 564 772
  18. 18. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 0 1 364 5 6 1 Z[0] Z[1] Z[2] 120 248 364 368 372 372 564 772
  19. 19. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 0 1 364 5 6 1 Z[0] Z[1] Z[2] 120 248 364 368 372 372 564 772
  20. 20. Заагч алхам алхмаар <ul><li>int x=1, y=2, z[10]={5,6,7}; </li></ul><ul><li>int *ip; /* ip нь з аагч int -г заана */ </li></ul><ul><li>ip = &x; /* ip now points to x */ </li></ul><ul><li>printf(&quot;ip now points to x that contains the value %d &quot;,*ip); </li></ul><ul><li>y = *ip; /* y is now 1 */ </li></ul><ul><li>printf(&quot;y is now %d &quot;,y); </li></ul><ul><li>*ip = 0; /* x is now 0 */ </li></ul><ul><li>printf(&quot;x is now %d &quot;,x); </li></ul><ul><li>ip = &z[2]; /* ip now points to z[2] */ </li></ul><ul><li>printf(&quot;ip now points to z[2] that contains the value %d &quot;,*ip); </li></ul><ul><li>*ip = 1; /* z[2] is now 1 */ </li></ul><ul><li>printf(&quot;z[2] is now %d &quot;, z[2]); </li></ul><ul><li>printf(&quot;ip is %p &quot;, ip); </li></ul>x y z ip 0 1 364 5 6 1 Z[0] Z[1] Z[2] 120 248 364 368 372 372 564 772
  21. 21. Нийтлэг алдаа анхааруулга <ul><li>Заагч ид илэрхийлэл болон тогтмол оноож болохгүй </li></ul><ul><li>Ямар нэг хувьсагчийн хаягийг өөрчилж болохгүй ( үүнийг бид тодорхойлохгүй !). </li></ul><ul><li>Дараах нь алдаанууд : </li></ul><ul><ul><li>i = &3; </li></ul></ul><ul><ul><li>j = &(k+5); </li></ul></ul><ul><ul><li>k = &(a==b); </li></ul></ul><ul><ul><li>&a = &b; </li></ul></ul><ul><ul><li>&a = 150; </li></ul></ul>
  22. 22. Аргументыг утгаар дамжуулах <ul><li>Бид энэ хүртэл функц руу аргументыг утгаар “by value” нь дамжуулж байсан </li></ul><ul><li>Утгаар дамжиснаар функц эх хувийг өөрчилж чаддаггүй </li></ul>
  23. 23. Буруу Swap <ul><li>swap нь хоёр хувьсагч хүлээн аваад тэгээрийн утгуудыг хооронд солих гэж байна даан ч эх хувь үл өөрчлөгдөнө . </li></ul><ul><li>void swap( int x, int y) </li></ul><ul><li> { </li></ul><ul><li>int tmp = x; </li></ul><ul><li>x = y; </li></ul><ul><li>y = tmp; </li></ul><ul><li>} </li></ul>
  24. 24. Үүнийг хэрхэн засах вэ ? <ul><li>Үүний тулд хаягуудыг нь хүлээн авч болно </li></ul><ul><li>void swap( int *x, int *y) </li></ul><ul><li> { </li></ul><ul><li>… *x ба *y хооронд нь соль … </li></ul><ul><li>} </li></ul><ul><li>Бид одоо swap(&x, &y) гэж дуудах хэрэгтэй ; </li></ul><ul><li>Энэ нь хаягаар дамжуулж байна </li></ul>
  25. 25. Swap зөв боллоо void swap( int *x, int *y) { int tmp = *x; *x = *y; *y = tmp; }
  26. 26. Scanf –д бид юу хийгээд байв аа? <ul><li>scanf(“%d”, &a); ийм бичлэгийг бид мэднэ </li></ul><ul><li>scanf –д бид үнэндээ хаягийг дамжуулж байсан байна , иймд scanf хувьсагчийн доторх зүйлийг өөрчилж чадаад байсан байна шүү дээ. </li></ul>
  27. 27. Дасгал <ul><li>Бодит тоо хүлээн аваад түүний бүхэл ба бутархай хэсгийг буцаах функц бич . </li></ul><ul><li>Энэ функцээ ашигласан жишээ програм бич . </li></ul>
  28. 28. Заагч ба Массив <ul><li>S массивын энхий элемент S[0] нь түүний хаягийг хадгалж байдаг </li></ul><ul><li>S нь үнэндээ бол S[0] -г заах заагч юм </li></ul><ul><li>int S[10]; </li></ul><ul><li>int *P; </li></ul><ul><li>P=S; /* P ба S нь адил */ </li></ul><ul><li>P ба S хоёул S[0] -г заана </li></ul>
  29. 29. Заагч- массив төстэй <ul><li>Массив бол з аагч ийн нэг хэлбэр юм ! </li></ul><ul><li>Массив тодорхойлогдоход санах ойн тодорхой хэсэгт зай авч байрлана . </li></ul><ul><ul><li>Массив хувьсагч массивын эхлэлийг заана. </li></ul></ul><ul><li>Заагч ийг зарламагц анхны утгыг оноодоггүй ( ердийн хувьсагчтай адилхан биш ) </li></ul>
  30. 30. Заагч ийн a рифметик <ul><li>Заагч ийг нэмэгдүүлж мөн хорогдуулж болно </li></ul><ul><li>Хэрэв p нь ямар нэг төрлийн з аагч бол , p+1 нь яг ийм төрлийн дараагийн хувьсагчийн хаяг болно </li></ul><ul><li>p++ , p+i , болон p += i гэж үйлдэл хийж болдог </li></ul>
  31. 31. Заагч арифметик - жишээ <ul><li>Хэрэв p ба q нь массив дахь элементүүдийг зааж байгаа бол q-p нь p ба q хооронд байх элементийн тоо юм . </li></ul><ul><li>Заагчийн арифметик болон тооны арифметик хоёр нь ялгаатай зүйлүүд . </li></ul><ul><li>Жишээ – ptr_arithmetic.c </li></ul>
  32. 32. Заагч ийн арифметик strcpy <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>
  33. 33. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ !’ ‘ !’ ‘ !’ ‘ !’ ‘ !’
  34. 34. <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>Strcpy – алхам алхмаар ‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ !’ ‘ !’ ‘ !’ ‘ !’
  35. 35. <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>Strcpy – алхам алхмаар ‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ !’ ‘ !’ ‘ !’ ‘ !’
  36. 36. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ !’ ‘ !’ ‘ !’ ‘ !’
  37. 37. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ !’ ‘ !’ ‘ !’ ‘ !’
  38. 38. <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>Strcpy – алхам алхмаар ‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ !’ ‘ !’ ‘ !’
  39. 39. <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>Strcpy – алхам алхмаар ‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ !’ ‘ !’ ‘ !’
  40. 40. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ !’ ‘ !’ ‘ !’
  41. 41. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ !’ ‘ !’ ‘ !’
  42. 42. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ s’ ‘ !’ ‘ !’
  43. 43. <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>Strcpy – алхам алхмаар ‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ s’ ‘ !’ ‘ !’
  44. 44. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ s’ ‘ !’ ‘ !’
  45. 45. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ s’ ‘ !’ ‘ !’
  46. 46. Strcpy – алхам алхмаар <ul><li>void my_strcpy( char *dest, char *src) </li></ul><ul><li>{ </li></ul><ul><li>while (*src != '') </li></ul><ul><li>{ </li></ul><ul><li>*dest = *src; </li></ul><ul><li>dest++; </li></ul><ul><li>src++; </li></ul><ul><li>} </li></ul><ul><li>*dest = ''; </li></ul><ul><li>} </li></ul>‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ %’ src dest ‘ y’ ‘ e’ ‘ s’ ‘ ’ ‘ !’
  47. 47. Дасгал <ul><li>Дараах зарлалт бүхий функц бич : </li></ul><ul><li>void replace_char( char *str, </li></ul><ul><li> char c1, </li></ul><ul><li> char c2); </li></ul><ul><li>Энэ нь str мөрөнд байх c 1 бүрийг c2 -р солино . [] операторыг ашиглахгүй ! </li></ul>
  48. 48. Бодолт <ul><li>char_replace.c </li></ul>
  49. 49. 2D хэмжээст массивийг функцэд дамжуулах <ul><li>Функц нь массивыг дараах байдлаар хүлээн авдаг – int func( int arr[]); </li></ul><ul><li>Хоёр хэмжээст массивыг – int func2(int arr2D[][]); гэж авах уу? </li></ul><ul><li>Энэ бол алдаа ! </li></ul>
  50. 50. 2D хэмжээст массивийг функцэд дамжуулах <ul><li>int func2( int arr[][4]); </li></ul><ul><li>Хоёр хэмжээст массив нь үнэндээ массивын массив юм </li></ul><ul><ul><li>int arr[3][4] – энэ нь дараах 3 элементтэй массив юм. 4 бүхэл тоог агуулах массив </li></ul></ul>
  51. 51. 2D хэмжээст массивийг функцэд дамжуулах <ul><li>2D хэмжээст массивийг функцэд дамжуулахадаа хэмжээсийг нь тодорхой бичиж өгнө </li></ul><ul><li>Энэ бол зөв зарлалт int func2( int arr[3][4]); </li></ul><ul><ul><li>‘ 3’ нь утга болоод өөр ямар нэг зүйлийг агуулахгүй </li></ul></ul>
  52. 52. Дасгал <ul><li>MatMul функц бич – </li></ul><ul><ul><li>оролт –A, B, C гэсэн гурван квадрат матриц </li></ul></ul><ul><ul><li>үйлдэл – C нь A ба B –ийн үржвэр </li></ul></ul><ul><li>Хоёр матрицыг хүлээн аваад тэдгээрийн үржвэрийг дэлгэцэнд хэвлэх програм бич </li></ul>
  53. 53. Solution mat_mul.c

×