44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
---
|
|
title: Passing pointers to funtions
|
|
localeTitle: تمرير مؤشرات إلى funtions
|
|
---
|
|
# تمرير مؤشرات إلى funtions
|
|
|
|
C يسمح تمرير مؤشر إلى دالة. لتحقيق ذلك ، قم ببساطة بتعريف المعلمات كنوع مؤشر. تعد هذه الطريقة في تمرير المراجع إلى الدالات مفيدة عندما تريد تعديل المتغيرات الخارجة عن نطاق تلك الوظيفة.
|
|
|
|
`// incorrect implementation of swap
|
|
#include <stdio.h>
|
|
void swap(int a, int b){
|
|
int c;
|
|
c = a;
|
|
a = b;
|
|
b = c;
|
|
}
|
|
int main(){
|
|
int var1 = 10;
|
|
int var2 = 20;
|
|
swap(var1, var2);
|
|
printf("Value of var1: %d \n", var1); // prints 10
|
|
printf("Value of var2: %d \n", var2); // prints 20
|
|
}
|
|
`
|
|
|
|
في مثال التعليمة البرمجية هذه ، لا تعمل وظيفة التبديل كما هو مقصود حيث تقوم بتبديل اثنين من المتغيرات الموجودة فقط داخل نطاق تلك الوظيفة. لإصلاح هذا ، نقوم بإجراء تعديل كما هو موضح أدناه.
|
|
|
|
`// correct implementation of swap
|
|
#include <stdio.h>
|
|
void swap(int* a, int* b){
|
|
int c = *a;
|
|
*a = *b;
|
|
*b = c;
|
|
}
|
|
int main(){
|
|
int var1 = 10;
|
|
int var2 = 20;
|
|
swap(&var1, &var2);
|
|
printf("Value of var1: %d \n", var1); // prints 20
|
|
printf("Value of var2: %d \n", var2); // prints 10
|
|
}
|
|
`
|
|
|
|
في المثال الثاني من التعليمات البرمجية ، تمكّنت من تغيير قيم المتغيرات فقط لأنك كنت تعمل باستمرار على عدم الرجوع إلى المؤشر داخل الدالة بدلاً من محاولة تغيير القيم مباشرة. |