មេរៀនទី៧: Array & Pointer
7.1. Array
-ជាឈ្មោះនៃសំនុំដែលមានច្រើនធាតុ និង ធាតុនិមួយរបស់វាមានប្រភេទទិន្នន័យ
ដូចគ្នា
និង អាចផ្ទុកតម្លៃបានរៀងៗខ្លួន។
-ការប្រកាស់អថេរប្រភេទ Array ក៌មានលក្ខណៈដូចការប្រកាសប្រភេទធម្មតាដែរ
ទំរង់
ប្រភេទទិន្នន័យ
ឈ្មោះរបស់ array[ចំនួនធាតុរបស់array]
Data type VariableName[Size
of array]
+បំណកស្រាយៈ
int a[5]
-ជា arrayប្រភេទ integer
-ឈ្មោះរបស់អថេរគឺ
a
-ចំនួនវិមាត្រៈ ១
-ចំនួនធាតុមាន ៥ គឺ: a[0], a[1],
a[2], a[3], a[4]
int x[3][4]
-ជា arrayប្រភេទ integer
-ឈ្មោះរបស់អថេរគឺ x
-ចំនួនវិមាត្រៈ 2
-ចំនួនធាតុមាន 3x4=12 គឺ:
X[0][0] x[0][1] x[0][2] x[0][3]
X[1][0] x[1][1] x[1][2] x[1][3]
X[2][0] x[2][1] x[2][2] x[2][3]
ធាតុរបស់ array ផ្តើមពី 0
ដល់ n-1
Ex:យើងមាន a[10] នោះ
-ធាតុដំបូង(first element)គឹ a[0]
-ធាតុចុងក្រោយ(last element)គឺ a[9]
Ex:
#include<conio.h>
#include<stdio.h>
void main()
{
int
a[5]={2,3,1,5,6};
printf(“a[2]=%d”,a[2]);
getch();
}
Ex:ពិនិត្យមើលលទ្ធផលនៃផលបូករបស់
array
#include<stdio.h>
#include<conio.h>
void main()
{
int
a[]={2,5,7,9,2};
int i,sum=0;
for(i=0;i<5;i++)
{
sum=sum+a[i];
}
printf(“ value of
sum=%d”,sum);
getch();
}
Ex:តំរៀបលំដាប់កើននៃ array
#include<stdio.h>
#include<conio.h>
void main()
{
int
x[]={2,5,3,9,2};
int i,j,temp;
…
printf(“ Array
after sort:\n);
for(i=0;i<5;i++)
printf(“%3d”,x[i]);
getch()
}
//Sort Array
for(i=0;i<5;i++)
{
for(j=i;j<5;j++)
{
if(x[i]>x[j];
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
-ការប្រកាស arrayប្រភេទ Character និង String
នៅក្នុងភាសា C ការប្រកាស
arrayប្រភេទ
Character គឹដូចគ្នាទៅនឹង ការប្រកាស string
ដែរ ដោយធាតុចុងក្រោយមានផ្ទុកធាតុ Null
Ex:ពិនិត្យមើលការប្រកាសខាងក្រោម៖
A[5]={‘a’,’b’,’c’,’d’}
A[5]=“abcd”
A[]=“abcd”
ការប្រកាសទាំង៣ខាងលើនេះគឺដូចគ្នា
7.2. Array ច្រើនវិមាត្រ(Multidimensional Array)
ជា Array ដែលមានបណ្តាធាតុ ច្រើន rows និង ច្រើន columns
ការភ្ជាប់តំលៃចាប់ផ្តើមអោយ
array ច្រើនវិមាត្រ
-Int a[3][4 ]={ {2,3,4,5} , {4,3,6,5} , {9,1,2,3} };
-Int a[3][4]={
{2,3,4,5},
{4,3,6,5},
{9,1,2,3}
};
-char names[3][5] ={“koko”,”kaka”,”kiki”};
Ex:ពិនិត្យមើលលទ្ធផលនៃ array
#include<stdio.h>
#include<conio.h>
void main()
{
char
name[3][5]={“koko”,”kaka”,”kiki”};
printf(“Name at
name[2]=%s”,name[2]);
printf(“Character at
name[1][1]=%c”,name[1][1]);
getch();
}
7.3.
Pointer
-Pointer គឺជាអថេរមួយប្រភេទដែលត្រូវបានគេប្រើសម្រាប់ផ្ទុកអាសយដ្ឋានរបស់អថេរប្រភេទណាមួយ។
-ដោយសារតែអាសយដ្ឋានមានច្រើនប្រភេទ ដូច្នេះ Pointer ក៌មានច្រើនប្រភេទដែរ
ដែលប្រភេទនិមួយៗសមមួលទៅនឹងប្រភេទអាសយដ្ឋាននោះ។ មានន័យថាៈ
-Pointer ប្រភេទ int សម្រាប់ផ្ទុក address របស់ int
-Pointer ប្រភេទ float សម្រាប់ផ្ទុក address របស់ float
ទំរង់
DataType *variable_name
ការប្រើប្រាស់
int a, *p,*q; // ប្រកាសអថេរ a, pointer p, pointer q ជាប្រភេទ int
p=&a; // ភា្ជប់អាសយដ្ឋាន a អោយទៅ pointer pឬ p ចង្អុលទៅកាន់
អាសយដ្ឋានរបស់អថេរ a
q=p // ភ្ជាប់តំលៃ p អោយទៅ q
Ex:
ចូរពិនិត្យ Address និង តំលៃ
#include<stdio.h>
#include<conio.h>
void main()
{
int a,b,*pa,*pb;
a=2;
b=3;
printf("
value a=%d\n value b=%d",a,b);
pa=&a;
pb=&b;
printf("\n
Memory using for pointer pa=%d, pb=%d",pa,pb);
printf("\n
Value for pointer pa=%d, pb=%d",*pa,*pb);
getch();
}
Ex:
#include<stdio.h>
#include<conio.h>
void main()
{
float a[4],*pa, s=0 ;
int i;
pa=a; // pa ចង្អុលទៅកាន់ធាតុដំបូងរបស់ array a
for(i=0;i<4;i++)
{
printf("a[%d]-->",i);
scanf("%f",&pa[i]);
s+=a[i];
}
printf("sum
of array=%f",s);
getch();
}
Ex: swap(permute) value of 2 number ( ធ្វើការបំលាស់ប្តូរតំលៃនៃ ២ ចំនួន)
#include<stdio.h>
#include<conio.h>
void swap(int *a, int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void main()
{
int m=20,n=30;
printf("befor swap : m=%d ,
n=%d \n",m,n);
swap(&m,&n);
printf("after
swap : m=%d, n=%d \n",m,n);
getch();
}



Thank for lesson
ReplyDeleteint a[2][3][3]
ReplyDelete