نیشاندەر لە C++/C دا (٢)

ناوه‌ڕۆكی ئه‌م وتاره‌
 سه‌رنج:
 كردار له‌سه‌ر نیشانده‌ر
 كرداری زیادكردن و كه‌مكردن
 نیشانده‌ر له‌سه‌ر ڕیز
 نیشانده‌ر له‌سه‌ر Data Structure
 نیشانده‌ر له‌سه‌ر نیشانده‌ر
 نیشانده‌ر وه‌ك ڕاگه‌یێنی نه‌خشه‌
سه‌رنج:

نموونه‌كان به‌گوێره‌ی زمانی++C ڕوون كراونه‌ته‌وه‌، تاكوو نموونه‌كان له‌سه‌ر زمانی
 C تاقی بكرێنه‌وه‌، ڕه‌چاوی ئه‌م گۆڕانكارییانه‌ بكه:
- له‌ بری iostream.h په‌ڕگه‌ی stdio.h بنووسه‌
- بۆ نیشاندانی ئه‌نجامه‌كان له‌سه‌ر كۆنسۆڵه‌كه‌ ڕێنوێنی printf به‌كار بهێنه
بۆ وێنه‌ نموونه‌ی سه‌ره‌وه‌ له‌ زمانی C دا به‌م شێوه‌یه‌ ده‌بێت:
#include <stdio.h>

int main()
{
  int n=10;
  int* p= &n;

  printf("n=%d \n",n); 
  *p = 4;
  printf("n=%d \n",n);

  return 0;
}  
وه‌ هه‌روه‌ها بۆ هه‌موو نموونه‌كانی تریش هه‌مان ڕێ بگره‌ به‌ر، گه‌ر هه‌ر گۆڕانكارییه‌كی تری پێویست له ‌به‌رنامه‌كه‌دا بوو بگۆڕدرێته‌ سه‌ر زمانی C به‌ئه‌نجامی بگه‌یه‌نه‌. كردار له‌سه‌ر نیشانده‌ر نیشانده‌ر چه‌ند كردارێكی ماتماتیكی (وه‌ك +، -، =) به‌سه‌ردا جێبه‌جێ ده‌كرێت. ده‌توانین نیشانده‌رێك یه‌كسان بكه‌ین به‌ نیشانده‌رێكی تر:
int i=0, k;
int* p1=&i;
int* p2=&k;

p1 = p2;
وه‌ك له‌ سه‌ره‌وه‌ باس كرا گه‌ر هێمای ٭ له‌گه‌ڵ گۆڕدراوه‌كه‌دا بوو ئه‌وا كار له‌گه‌ڵ ناواخنی نیشانده‌ره‌كه‌ ده‌كرێت و، به‌ پێچه‌وانه‌یشه‌وه‌ كار له‌گه‌ڵ ناونیشانه‌كه‌دا ده‌كرێت. لێره‌دا ناونیشانه‌كه‌ یه‌كسان كراوه‌، كه‌واته‌ p1 ناونیشانی نیشاندراوی p2 وه‌رده‌گرێت و p1 ده‌بێته‌ نیشانده‌ر بۆ k ئێستا گه‌ر p1 بگۆڕین:
*p1 = 2;
وه‌ك ئه‌وه‌یه‌ كه‌ گۆڕاوی k گۆڕدرابێت.
void main(void)
{
 int i=0,k;
 int* p1=&i;
 int* p2=&k;
 p1 = p2;
 *p1 = 2;
 cout << *p1 << endl; 
 cout << k << endl;
} 

پاش جێبه‌جێكردنی ئه‌م به‌رنامه‌یه‌، له‌سه‌ر كۆنسۆڵه‌كه‌ دووجار ٢ ده‌نووسرێت، چونكه‌ ناواخنی نیشانده‌ره‌كه‌ یه‌كسانه‌ به‌ گۆڕاوی k.  كرداری زیادكردن و كه‌مكردن كرداره‌كانی زیادكردن '+' و كه‌مكردن '-' له‌سه‌ر نیشانده‌ر جێبه‌جێ ده‌كرێن، به‌ هه‌مان شێوه‌یگۆڕاوی ئاساییی تر، هه‌روه‌ها ده‌كرێت ده‌ستكاریكردنی نیشانده‌ر به‌ ده‌سته‌واژه‌ی ماتماتیكی به ‌ئه‌نجام بهێنرێت. له‌م به‌رنامه‌یه‌ی خواره‌وه‌دا ڕوونكردنه‌وه‌ی له‌سه‌ر ده‌ده‌ین:
#include <iostream.h>
void main(void)
{
int j, k;
int *p1, *p2;
j=1;
k=4;
p1 = &j;
p2 = &k;
(*p1)++;

cout << "j=" <<j << endl; 
cout << "k=" <<k << endl;

cout << "*p1=" <<*p1 << endl; 
cout << "*p2=" <<*p2 << endl;

*p1 = *p2 ;
cout << "j=" <<j << endl; 

*p1 += 4;
k= *p1 - 2 ;

cout << "k=" <<k << endl;
}

:ئه‌نجامه‌كان یه‌ك له‌ دوای یه‌ك له‌سه‌ر كۆنسۆڵه‌كه‌ به‌م شێوه‌یه‌ی خواره‌وه‌یه‌
j=2
k=4
*p1=2
*p2=4
j=4
k=6
نیشانده‌ر له‌سه‌ر ڕیز ئه‌بێت ئه‌وه‌ بزانین كه‌ تاكوو ئێستا ئێمه‌ كارمان له‌گه‌ڵ ناواخنی نیشانده‌ره‌كه‌ كردووه‌‌، واته‌ نرخه‌ نیشاندراوه‌كه‌. لێره‌دا گه‌ر ناونیشانه‌كه‌ كه‌م و زیاد بكه‌ین ئه‌وا نیشانده‌ره‌كه‌ نیشانده‌ر ده‌بێت بۆ شوێنێكی دیكه‌ له‌ بیرگه‌دا!، تاكوو ئه‌م خاڵه‌ زیاتر لامان ئاشكرا بێت به‌ وێنه‌ی یه‌كه‌مدا ده‌چینه‌وه‌ و ده‌بینین نیشانده‌ره‌که‌ ناونیشانی خانه‌یه‌ك نیشان ده‌دات، گه‌ر ناونیشانه‌كه‌ بگۆڕدرێت نیشانده‌ره‌كه‌ خانه‌یه‌كی تر نیشان ده‌دات و بێگومان ئه‌و كات ناواخنه‌كه‌شی نرخێكی تری ده‌بێت. ئه‌م باره‌ له‌گه‌ڵ ڕیزه‌خانه یان زنجیره‌نووسه‌ زیاتر ده‌رده‌كه‌وێت، بۆ وێنه ئه‌م ڕوونكردنه‌وه‌یه‌ی خواره‌وه‌مان هه‌یه‌:
float riz[30], *p3;
گۆڕاوی riz ڕیزێكه له‌ ژماره‌ ناته‌واوه‌كان و له ٣٠ ژماره‌ پێك هاتووه‌، p3 نیشانده‌رێكه‌. ناونیشانی گۆڕاوی riz ده‌ده‌ین به‌ نیشانده‌ره‌كه‌:
p3 = riz;
به‌و شێوه‌یه‌ p3 ناونیشانی یه‌كه‌م ژماره‌ی ڕیزه‌كه‌ وه‌رده‌گرێت، كه‌ سه‌ره‌تای ده‌ستپێكردنی ڕیزه‌كه‌یه‌. بێگومان ده‌ربڕینی سه‌ره‌وه‌ ده‌كرێت به‌م شێوه‌یه‌ی خواره‌وه‌ش بنووسرێت:
p3 = &riz[0];
له‌ هه‌ردوو باره‌كه‌دا نیشانده‌ره‌كه‌ p3 ناونیشانی یه‌كه‌م خانه‌ی ڕیزه‌كه‌ وه‌رده‌گرێت. كه‌واته‌ ئێستا گه‌ر ناونیشانه‌كه‌ زیاد بكه‌ین، نیشانده‌ره‌كه‌ ناونیشانی خانه‌ی تر وه‌رده‌گرێت له‌ ڕیزه‌كه‌دا، بۆ وێنه‌:
p3++;
ئێستا p3 ناونیشانی دووه‌م ژماره‌ی ڕیزه‌كه‌ وه‌رده‌گرێت، كه‌واته‌ نیشانده‌ره‌ بۆ دووه‌م ژماره‌ و، ده‌توانین ناواخنی ئه‌م نیشاندراوه‌ش بگۆڕین وه‌ك له ‌سه‌ره‌وه‌ باس كرا:
*p3 = 3.14;

ته‌ماشای شێوه‌ی خواره‌وه‌ بكه‌ تاكوو زیاتر نیشانده‌ره‌كه‌ بێته‌ به‌ر چاوت  نموونه‌كه‌ به‌ كرداریی له‌ به‌رنامه‌یه‌كدا:
#include <iostream.h>
void main(void)
{
 float riz[30], *p3;

 p3 = &riz[0];

 p3++;
 *p3 = 3.14;

 cout << "riz[1]=" << riz[1]<< endl; 
} 
پاش جێبه‌جێکردن له‌سه‌ر كۆنسۆڵه‌كه‌ ئه‌م ئه‌نجامه‌ ده‌بینین: riz[1]=3.14 به ‌هه‌مان شێوه‌ی سه‌ره‌وه‌ ده‌توانین ناونیشانه‌كه‌ ببه‌ینه‌ سه‌ر ژماره‌یه‌كی تر له‌ ڕیزه‌كه‌دا:
p3 += 25;
ئێستا نیشانده‌ره‌كه‌ p3 ناونیشانی ژماره‌ی ٢٧ ـی وه‌رگرتووه‌ له‌ ڕیزه‌كه‌دا و ده‌توانین ناوه‌ڕۆكه‌كه‌ی بگۆڕین:
*p3 = 2;

cout << "riz[26]=" << riz[26]<< endl; 

cout << "riz[26]=" << *p3<< endl;

p3 = &riz[0];
cout << "riz[26]=" << *(p3+26)<< endl; 

for(int i=0; i<30; i++)
*(p3+i) = 1.0;


#include <iostream.h>
void main(void)
{
float riz[30], *p3;

p3 = riz;

for(int i=0; i<30; i++)
*(p3+i) = 1.0;

cout << "riz[4]=" << riz[4] << endl; 
} 

له‌ سووڕه‌كه‌دا هه‌موو دانه‌كانی ڕیزه‌كه‌ یه‌ك نرخ وه‌رده‌گرن.. نیشانده‌ر له‌سه‌ر Data Structure وه‌ك له‌ نموونه‌كانی پێشوودا ده‌ركه‌وت، نیشانده‌ر له‌سه‌ر ڕیز پێناس ده‌كرێت، هه‌روه‌ها ده‌كرێت له‌سه‌ر دراوه‌ی پێكهێنراوی ئاڵۆزتر نیشانده‌ر دابنرێت و سوودی لێ وه‌ربگیرێت، وه‌ك له‌م نموونه‌یه‌ی خواره‌وه‌دا ده‌رده‌كه‌وێت:
#include <iostream.h>
void main(void)
{
  struct Address {
  char Naw[30];
  char Sheqam[30];
  long jimare;
 }Adr= {"azad", "salim", 207};

 Address *pAdr;
 pAdr = &Adr;

 cout << "Naw=" << pAdr->Naw << endl; 
} 
پاش ڕوونكردنه‌وه‌ی په‌یكه‌ری دراوه‌كه‌، نیشانده‌رێك له‌ جۆری Address پێناس ده‌كه‌ین تاكوو بتوانین له‌ هه‌نگاوی دوای ئه‌ودا ناونیشانی Adr ـی بده‌ینێ:
pAdr = &Adr;
بۆ ‌ نیشاندانی ئه‌ندامه‌كانی دراوه‌ی Adr به‌ هۆی نیشانده‌ره‌كه‌وه‌، سه‌یری خواره‌وه‌ بكه‌:
cout << "Naw=" << pAdr->Naw ; 
ده‌بینین نیشانده‌ر له‌ ڕێی هێمای ئاراسته‌كردن (->) كار له‌گه‌ڵ ئه‌ندامه‌كانی Adr ده‌كات، وه‌ك ده‌زانرێ كرده‌ی خاڵ (.) هه‌ڵبژاردنی ئه‌ندامێك به‌كارده‌برێت له‌ دراوه‌په‌یكه‌ری ئاساییدا، بۆ وێنه له‌گه‌ڵ Adr دا:
cout << "Naw:" << Adr.Naw << endl;
cout << "Sheqami:" << Adr.Sheqam << endl;
بێگومان ده‌كرێت كرده‌ی . له‌گه‌ڵ نیشانده‌ریشدا به‌كار ببرێت، گه‌ر به‌م شێوه‌یه‌ی خواره‌وه‌ بنووسرێت:
cout << "Naw: " << (*pAdr).Naw << endl; 
له‌ زمانی C دا:
printf("Naw: %s \n",(*pAdr).Naw);
لێره‌دا ڕاسته‌وخۆ كار له‌گه‌ڵ ناواخنی نیشانده‌ره‌كه‌دا ده‌كرێت بۆیه‌ به‌كاربردنی كرده‌ی . گونجاوه‌. سه‌رنج بده‌ له‌ (*pAdr)دا كه‌وانه‌كان پێویستن، چونكه‌ كرده‌ی . پێشه‌نگیی زیاتره ‌ له‌ كرده‌ی ٭ و كه‌وانه‌كان پێشه‌نگییه‌كه‌ ده‌گۆڕن، تاقیی بكه‌ره‌وه‌ به‌ بێ كه‌وانه‌كان تاكوو بزانیت چی ڕوو ده‌دات. زۆر گرنگه‌ بزانرێت نیشانده‌ر له‌سه‌ر كام جۆره‌ داتا نیشانده‌ره‌، تاكوو مامه‌ڵه ‌ له‌گه‌ڵ ناونیشانه‌كه‌دا به‌ شێوه‌یه‌كی دروست ئه‌نجام بدرێت. له‌ نموونه‌ی سه‌ره‌وه‌دا ڕوون كرایه‌وه‌ نیشانده‌ر له‌سه‌ر دراوه‌په‌یكه‌رێك پێناس كرا، ئه‌مه‌ش گه‌وره‌ییی نیشانده‌ره‌كه‌ ڕوون ده‌كاته‌وه‌. نموونه‌ی خواره‌وه‌ هه‌مان دراوه‌په‌یكه‌ری سه‌ره‌وه‌ی تیا پێناس كراوه‌، به‌ شێوه‌ی ڕیز. ڕیزه‌كه‌ ٣ دانه‌ی له‌ خۆ گرتووه‌:
#include <iostream.h>

void main(void)
{
  struct Address {
   char Naw[30];
   char Sheqam[30];
   long jimare;
 }Adr[]= {
     {"azad", "salim", 207},
     {"lave", "goran", 32},
     {"ary", "zanko", 125},
  };

 Address *pAdr;
 pAdr = Adr;

 pAdr++;
 cout << "Naw: " << pAdr->Naw << endl; 
 cout << "Sheqami:" << pAdr->Sheqam << endl;
 cout << "jimare: " << pAdr->jimare << endl;

} 
نیشانده‌ره‌كه‌ ناونیشانی یه‌كه‌م ئه‌ندام له‌ ڕیزه‌كه‌دا وه‌رده‌گرێت:
pAdr = Adr;
به‌هه‌مان شێوه‌ی پێشوو كرداره‌كانی زیادكردن و كه‌مكردن (+، -) كار له‌گه‌ڵ
 نیشانده‌ره‌كه‌ ده‌كه‌ین:
pAdr++;
 نیشانده‌ره‌كه‌ pAdr ناونیشانی دووه‌م ئه‌ندام ڕیزه‌كه‌ وه‌رده‌گرێت. پاش جێبه‌جێكردنی به‌رنامه‌كه‌ له‌سه‌ر كۆنسۆڵه‌كه‌ ئه‌م دراوانه‌ نیشان ده‌درێن: Naw: lave Sheqami:goran jimare: 32 نیشانده‌ر له‌سه‌ر نیشانده‌ر وه‌ك چۆن نیشانده‌ر له‌سه‌ر  گۆڕاوێك ناونیشانی شوێنی هه‌ڵگرتنی  گۆڕاوه‌كه‌ نیشان ده‌دات، ده‌توانرێت به‌ هه‌مان شێوه‌ش نیشانده‌رێك له‌سه‌ر نیشانده‌رێكی دیكه‌ دروست بكرێت و ناونیشانه‌كه‌ی نیشان بدات. پێناسكردنی نیشانده‌رێك له‌سه‌ر نیشانده‌رێكی تر به‌ به‌كاربردنی هێمای ** له‌ نێوان جۆری دراوه‌ و ناوه‌كه‌یدا ده‌بێت، وه‌ك له‌م نموونه‌یه‌ی خواره‌وه‌دا ده‌رده‌كه‌وێت:
int i;
int* pi = &i;
int** ppi = &pi;
ppi نیشانده‌ره‌ له‌سه‌ر نیشانده‌ری pi، واته‌ ناونیشانی pi له‌ خۆ ده‌گرێت.  نموونه‌یه‌كی كرداریی وه‌رده‌گرین:
#include <iostream.h>

void main(void)
{
  int x, *y, **z;
 y = &x ;
 z = &y ;
 x = 42;
 cout << "x=" << x << endl ;
 *y = 32;
 cout << "x=" << x << endl ;
 **z =22;
 cout << "x=" << x << endl ;
} 
 گۆڕاوی y نیشانده‌رێكه‌ له‌سه‌ر نرخێكی ژماره‌ی ته‌واو، كه‌  گۆڕاوی x ـه،  گۆڕاوی z نیشانده‌ره له‌سه‌ر گۆڕای y. واته‌ z ناونیشانی y وه‌رده‌گرێت. وه‌ك له‌ به‌رنامه‌كه‌دا ده‌رده‌كه‌وێت نرخی x به‌ سێ شێوه‌ ده‌توانرێت بگۆڕدرێت. پاش ئه‌نجامدانی به‌رنامه‌كه‌ له‌سه‌ر كۆنسۆڵه‌كه‌ ئه‌م ده‌ربڕینانه‌ ده‌رده‌كه‌ون: x=42 x=32 x=22 نیشانده‌ر وه‌ك ڕاگه‌یێنی نه‌خشه‌ ده‌كرێت  گۆڕاوێكی نیشانده‌ر وه‌ك ڕاگه‌یێنێك بۆ نه‌خشه‌ دابنرێت، بانگهێشتكردنی نه‌خشه‌كان به‌ پێدانی ناونیشانی ڕاگه‌یێنه‌كانی ئه‌نجام ده‌درێت، كه به‌ call by reference ناسراوه‌. لێره‌دا بایه‌خی نیشانده‌ر ده‌رده‌كه‌وێت كه‌ مامه‌ڵه‌ له‌گه‌ڵ ناونیشانی  گۆڕاوه‌كاندا ده‌كات و ڕاسته‌وخۆ نرخی  گۆڕاوه‌كان له‌ نه‌خشه‌كاندا ده‌توانرێت ده‌ستكاری بكرێن و بگۆڕدرێن. له‌م به‌رنامه‌یه‌ی خواره‌وه‌دا نه‌خشه‌ی Goriyn كه‌ دوو نیشانده‌ری ژماره‌ی ته‌واو وه‌رده‌گرێت، هه‌ڵده‌ستێت به‌ گۆڕینه‌وه‌ی نرخی دوو ژماره‌كه‌، گه‌ر ڕاگه‌یێنه‌كان نیشانده‌ر نه‌بوونایه‌ نرخی دوو ژماره‌كه‌ وه‌ك خۆیان ده‌مانه‌وه‌.
#include <iostream.h>

void Goriyn(int* a, int* b)
{
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
} 


void main(void)
{
  int j1, j2;
  j1 = 31;
  j2 = 90;

  cout << "j1=" << j1 << endl ;
  cout << "j2=" << j2 << endl ;

  Goriyn(&j1, &j2);

  cout << "j1=" << j1 << endl ;
  cout << "j2=" << j2 << endl ;
}
شێوازی بانگكردنی نه‌خشه‌كه‌ له ‌ڕێی پێدانی ناونیشانی j1,j2 وه‌ك به‌ڵگه‌ بۆ نه‌خشه‌كه‌ ئه‌نجام ده‌درێت:
Goriyn(&j1, &j2);
پاش جێبه‌جێكردنی كاری نه‌خشه‌كه‌ ده‌بینین نرخی دوو  گۆڕاوه‌كه‌ j1,j2 گۆڕاون. بۆ تاقیكردنه‌وه‌ نه‌خشه‌یه‌كی تر له‌ به‌رنامه‌كه‌دا بنووسه‌، به‌م شێوه‌یه‌:
void Goriyn2(int a, int b)
{
  int temp;
  temp = a;
  a = b;
  b = temp;
} 
له‌ نه‌خشه‌ی سه‌ره‌كیدا له‌ بری Goriyn بانگهێشتی بكه‌:
Goriyn2(j1, j2);
ده‌بینیت گۆڕانكاری له‌ نرخه‌كاندا نابێت!. ماوه‌ته‌وه‌ بڵێین نیشانده‌ر زۆر زیاتر هه‌ڵده‌گرێت‌ باسی له‌سه‌ر بكرێ و نموونه‌ی جۆراوجۆری له‌سه‌ر بنووسرێ، من لێره‌دا كۆتایی به‌ باسی نیشانده‌ر دێنم و دوو بابه‌تی: "نیشانده‌ر وه‌ك ئاكامی نه‌خشه"‌، "نیشانده‌ر له‌سه‌ر نه‌خشه"‌ هه‌ڵده‌گرم بۆ بابه‌تێكی تر.

وەڵامێک بنووسە

پۆستی ئەلیکترۆنییەکەت بڵاوناکرێتەوە. خانە پێویستەکان دەستنیشانکراون بە *