Wednesday, December 9, 2009

Лекц №10

Á¿òýö òºðºë áà çààã÷
 Á¿òýö òºðëèéí çààã÷ çàðëàõ:
struct <á¿òöèéí íýð> * <çààã÷èéí íýð>
 Á¿òýö òºðëèéí çààã÷ îáüåêòûí ãèø¿¿í ýëåìåíòýä õàíäàõ
á¿òöèéí íýð ãèø¿¿í õóâüñàã÷;
Æèøýý:
include
struct student {
char Name[20];
int grade;
} sw
struct student *p=&sw;
main()
{ scanf(“%s”,p Name); scanf(“%d”,&p grade);
printf(“\n Name=%s”,p grade);
printf(“Grade=%d\n”,p grade)’
}
Á¿òýö òºðºë áà çààã÷

Äàðààõ àðãààõ õàíäàæ áîëäîã.
(*Á¿òöèéí íýð). Ãèø¿¿í õóâüñàã÷;
Æèøýý:
main()
{ scanf(“%s”,(*p).Name); scanf(“%d”,&(*p).grade);
printf(“\n Name=%s”,(*p).grade);
printf(“Grade=%d\n”,(*p).grade);
}
¿éëäýë :
Ýíý ¿éëäýë íü ( )¿éëäëýýñ áàãà çýðýãëýëòýé.Õàðèí óíàð ¿éëäë¿¿äýýñ ºíäºð çýðýãëýëòýé ¿éëääýë þì. Èéìä:
++ð Age èëýðõèéëýëèéí õóâüä ð çààã÷èéí óòãà áèø , Age õóâüñàã÷èéí óòãà ººð÷ëºãäºíº.
Õàðèí (++p) Age èëýðõèéëëèéí õóâüä ð çààã÷èéí óòãà íýìýãäýíý.
include
struct Instit {
char*depart ; int total;
char*depart 1; int total;
} stand={“Ïðîãðàì õàíãàìæ ” ,120, “Òåõíèê õàíãàìæ ”,80};
int sum(dep_num)
struct Instit*dep_num;
{ return (dep_num Total+dep_num Total);
}
main()
{ printf(“Total:%d”,sum(&stand)); }
Îëîí õýìæýýñò ìàññèâ áà çààã÷
Ñè õýëýíä 2 õýìæýýñò ìàññèâûã 1 õýìæýýñò ìàññèâóóäûí ìàññèâ áàéäëààð ä¿ðñýëäýã. Òèéìýýñ ìàññèâò çààã÷ àøèãëàí õàíäàõäàà äàðààõ áàéäëààð õàíääàã.
*(A+i) áîë i-ð ìºðèéí ýõíèé ýëåìåíòèéí õàÿã
*(A+i)+j áîë i-ð ìºðèéí j-ð ýëåìåíòèéí õàÿã
*(*(A+i)+j áîë i-ð ìºðèéí j-ð ýëåìåíòèéí óòãà
Îëîí õýìæýýñò ìàññèâ áà çààã÷
ªºðººð õýëáýë äàðààõ áè÷ëýã¿¿ä àäèëõàí.
&A[i][j]==*(A+i)+j
A[i][j]==*(*(A+i)+j)
A[i]==&A[i][0]
A[i][0]==*A[i]
A[i][j]==*(A[i]+j)
Æèøýý 1 : 2 õýìæýýñò ìàññèâûã õýâëýõ .
for(i=0; i<10; i++)
{ for (j=0;j<10; j++) printf(“%d”,*(*(A+i)+j));
printf(“\n”);
}
Æèøýý 2: 2 õýìæýýñò ìàññèâò óòãà îëãîõ.
for(i=0;k=0; i<10;i++)
for(j=0; j<10; j++) *(*(A+i)+j)=k++;
Çààã÷èéí çààã÷
 Çààã÷èéã çààõ õóâüñàã÷ûã çààã÷èéí çààã÷ ãýíý. ªºðººð õýëáýë çààã÷ îáüåêòûã çààäàã õóâüñàã÷ þì.
 Èéì õýëáýðèéí çààã÷èéã îëîí õýìæýýñò ìàññèâ áà ìºð òýìäýãòèéí õóâüä õýðýãëýõýä òîõèðîìæòîé áàéäàã.
Çààã÷èéí çààã÷ õóâüñàã÷ûã çàðëàõ:
<òºðºë>**<çààã÷èéí íýð>;
æèøýý íü : int **p;
çààã÷èéí çààã÷èä óòãà îëãîõ :
<çààã÷èéí íýð>=&<õóâüñàã÷èéí íýð>
æèøýý íü : p=&array;
æèøýý íü :
int a[4]={1,2,3,4};

int*p[4]={a,a+1,a+2,a+3};

int **pp=p; çààã÷èéí ìàññèâ

çààã÷èéí çààã÷ õóâüñàã÷
pp++;
printf(“%d”,*pp); /*2*/
printf(“%d”,**pp++); /*2*/
2. int a[4]={1,2,3,4};

int *p[4]={a,a+1,a+2,a+3};
a+2
int **pp=p;
**++pp; /*4*/
++**pp; /*5*/
*(--*pp); /*3*/

Õºðâ¿¿ëýëò õèéõ
-æèøýýíä int òºðºëò p çààã÷èéí çààã÷ àøèãëàâ.
-Õàðèí òºðºëò áèø çààã÷ áóþó void òºðëèéí çààã÷èéí çààã÷ àøèãëàõ ìºí ÿëãààòàé òºðºëòýé çààã÷ààð îáüåêòîä õàíäàõ ¿åä õºðâ¿¿ëýëò õèéíý.
-çààã÷èéí çààã÷ õóâüñàã÷ äýýð õºðâ¿¿ëýëò õèéõäýý äàðààõ áè÷ëýã àøèãëàíà.
-áè÷ëýã: (òºðºë**)
Çààã÷èéí çààã÷ äýýð õºðâ¿¿ëýëò õèéõ .
include
int a[4]={1,2,3,4}; int *p[4]={ a,a+1,a+2,a+3};
int **ip=p;
char **cp=(char**p);
void **pp=(void**)p;
main()
{ printf(“int: %d\n”,**ip);
printf(“char: %d\n”,**(int**)cp);
printf(“void: %d\n”, **(int**)pp);
}
Òýìäýãò ìºð ìàññèâ
Òýìäýãò ìºðò çààã÷ àøèãëàí õàíäàõ íü 1 õýìæýýñò ìàññèâò çààã÷ àøèãëàí õàíäàõòàé èæèë.Õàðèí òýìäýãò ìºð òºðëèéí ìàññèâûí ýëåìåíò¿¿äýä çààã÷èéí çààã÷ àøèãëàí õàíäâàë èë¿¿ òîõèðîìæòîé.

char*c[ ]={“Input”, “Add”,”Data”,”Debug”};
char **cp[ ]={c,c+1,c+2,c+3};
char***cpp=cp;
Òýìäýãò ìºð ìàññèâ
char *c[ ]={“Input”,”Add”,”Data”, ”Debug”};

char**cp[ ]={ c,c+1,c+2,c+3};

char ***cpp=cp;
-printf(“%s\n”,*(*(++cpp))); /*Add*/
/* ++cpp; **cpp; */
-printf(“%s\n”, (*(--(*(++cpp))))+1; /*dd*/
/* ++cpp; --*cpp; **cpp+1; */

No comments:

Post a Comment