البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -3- المصفوفات والدوال :

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -3- المصفوفات والدوال :

مُساهمة من طرف Admin في السبت فبراير 01, 2014 6:49 pm

البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -3- المصفوفات والدوال :

فى البرمجة بلغة السى ، يمكن تمرير عنصر مفرد لمصفوفة أو المصفوفة بالكامل إلى دالة . أيضا يمكن تمرير كل من مصفوفة البعد الواحد أو المصفوفة متعددة الأبعاد إلى دالة كدليل (بارامتر) .

تمرير مصفوفة البعد الواحد فى الدالة :

فيما يلى برنامج لتمرير عنصر مفرد من مصفوفة إلى دالة :

الكود:


#include <stdio.h>
void display(int a)
  {
  printf("%d",a);
  }
int main(){
  int c[]={2,3,4};
  display(c[2]);  //Passing array element c[2] only.
  return 0;
}


الخرج :

الكود:


4


يمكن تمرير عنصر من مصفوفة بنفسطريقة تمرير متغير لدالة .

تمرير مصفوفة البعد الواحد بالكامل إلى دالة :

بينما يتم تمرير مصفوفات إلى دليل أو وسيط ، يتم تمرير اسم المصفوفة كدليل ( بمعنى أن عنوان البداية لمساحة الذاكرة يتم تمريره كدليل ) .

كتابة برنامج لتمرير مصفوفة تحتوى على سن (عمر) شخص إلى دالة . هذه الدالة يجب أن توجد متوسط العمر وعرضه فى الدالة الرئيسية .

الكود:


#include <stdio.h>
float average(float a[]);
int main(){
    float avg, c[]={23.4, 55, 22.6, 3, 40.5, 18};
    avg=average(c);  /* Only name of array is passed as argument. */
    printf("Average age=%.2f",avg);
    return 0;
  }
float average(float a[]){
    int i;
    float avg, sum=0.0;
    for(i=0;i<6;++i){
      sum+=a[i];
    }
    avg =(sum/6);
    return avg;
}



الخرج :


الكود:


Average age=27.08

تمرير المصفوفات متعددة الأبعاد إلى دالة :

لتمرير مصفوفة ثنائية الأبعاد إلى دالة كدليل (وسيط) ، يتم تمرير عنوان بداية مساحة الذاكرة كما فى مصفوفة البعد الواحد .
مثال لتمرير المصفوفات ثنائية الأبعاد إلى دالة :

الكود:


#include
void Function(int c[2][2]);
int main(){
  int c[2][2],i,j;
  printf("Enter 4 numbers:\n");
  for(i=0;i<2;++i)
      for(j=0;j<2;++j){
          scanf("%d",&c[i][j]);
      }
  Function(c);  /* passing multi-dimensional array to function */
  return 0;
}
void Function(int c[2][2]){
/* Instead to above line, void Function(int c[][2]){ is also valid */
  int i,j;
  printf("Displaying:\n");
  for(i=0;i<2;++i)
      for(j=0;j<2;++j)
          printf("%d\n",c[i][j]);
}



الخرج :

الكود:



Enter 4 numbers:
2
3
4
5
Displaying:
2
3
4
5



Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى