C میں موجود Fiction pointers ایک نہایت عملی خصوصیت ہے جو ترقی پذیروں کو کام میں لانے کے قابل بناتی ہے --facts نے دیگر کاموں کو چلا کر اور بعد میں مدعو کیا، واقعات اور حالات کے جواب میں، یہ تکنیک تقریب-ای پروگرامنگ، لائبریری ڈیزائن اور کوڈ دوبارہ تعمیر کرنے میں بنیاد ہے. یہ مضمون گہرے پیمانے پر کام کرنے والے بنیادی عوامل کو جانچتا ہے، بنیادی طور پر

سی میں متحرک پوائنٹ سمجھنے والے

ایک تقریبی نقطہ نظر ہے جو کسی تقریب کا میموریل معلومات کو جمع کرتا ہے. عام پوائنٹ کے برعکس جو ڈیٹا تک اشارہ کرتے ہیں، عملا پوائنٹ پر زور دیتے ہیں

int (*funcPtr)(int, int);

یہ ایک ایسا تقریب کے طور پر ہے جو دو پیرامیٹرس کو قبول کرتا ہے اور [1] [1]]. [1] کے ارد گرد موجود ربر کے گرد ایک نقطہ کو حاصل کرنے کے لیے درکار ہے.

int add(int a, int b) { return a + b; }
funcPtr = add; // or &add

نقطہ نظر سے گزرنے والا نقطہ بالکل سادہ ہے:

int result = funcPtr(5, 3); // calls add(5, 3)

فی کسشن پوائنٹز کو اس طرح سے استعمال کیا جاتا ہے: پوائنٹر کے دستخط کو مقررہ تقریب کے دستخط سے مطابقت درکار ہے۔

عام استعمال کنسس برائے فیکلٹی پوائنٹرز استعمال کرتے ہیں۔

  • کال بیک کام – اس مضمون کا بنیادی مرکزی مرکز۔
  • سٹیٹ مشین – table of actress عمل میں لاتے ہیں۔
  • Plugin یا ڈرائیور آرکیٹیکچر – فعال کارکردگی کا بوجھ اٹھانے والا۔
  • ] کومپراٹر دلیل – معیاری لائبریری میں استعمال ہونے والی لائبریری میں ) کام کرتی ہے۔
  • [Dispatch tables[1] – قاعدہ العملات برائے مینوفیکچر یا کمانڈ ترجمان (commander)۔

فوننگ پوائنٹرز کیساتھ دعوت‌نامے

دعوتی بیک ایک ایسا عمل ہے جس کا عنوان کسی اور تقریب میں منتقل کیا جاتا ہے، وصولی تقریب کو مناسب وقت پر دعوت دینے کی اجازت دیتا ہے. یہ decoupss on the oncommanded تفصیلات سے شروع کر کے، مؤثر ڈیزائن کو فروغ دینے، یہاں ایک کلاسیکی مثال ہے:

#include <stdio.h>

void executeOperation(int a, int b, int (*operation)(int, int)) {
 int result = operation(a, b);
 printf("Result: %d\n", result);
}

int add(int x, int y) { return x + y; }
int multiply(int x, int y) { return x * y; }

int main() {
 executeOperation(5, 3, add);
 executeOperation(5, 3, multiply);
 return 0;
}

یہاں ایک تقریبی نقطہ نظر کو قبول کرتا ہے اور اسے کے ساتھ پکارتے ہیں . یہ طریقہ نگاری، asynchronous I/O، اور نظام کی سطح پر موجود ایک مُہر (system-lection) میں وسیع پیمانے پر استعمال کیا جاتا ہے۔

صارف کنس‌کس لائن سے رجوع کریں

اکثر اوقات بلاول کو ٹھوس پیرامیٹرز کے علاوہ اضافی ڈیٹا درکار ہوتا ہے۔ایک عام تکنیک پس منظری پوائنٹ کو دعوتی پشتے تک منتقل کرنا ہے:

typedef void (*Callback)(int event, void* context);

void registerCallback(Callback cb, void* ctx) {
 // store cb and ctx internally
 // later, invoke:
 cb(EVENT_TIMER, ctx);
}

void myEventHandler(int event, void* data) {
 int* value = (int*)data;
 printf("Event %d, value %d\n", event, *value);
}

int main() {
 int myData = 42;
 registerCallback(myEventHandler, &myData);
 return 0;
}

یہ انداز GLib (GTK+) جیسی لائبریریوں میں استعمال ہوتا ہے، جہاں فون بیک کسی کے ذریعے صارف اعداد و شمار کو چلاتا ہے۔

جسم میں موجود چیزوں کی مقدار

فکشن پوائنٹر کی مدد سے غیر واضح طور پر، خاص طور پر پیچیدہ دستخط کے ساتھ. استعمال کریں.

typedef int (*Operation)(int, int);

void execute(Operation op, int a, int b) {
 if (op) {
 printf("Result: %d\n", op(a, b));
 }
}

اب ایک خالص قسم کا نام ہے. یہ خاص طور پر مفید ہے جب بڑے کوڈبیس میں متعدد کال بیک ورک کے کام استعمال کیے جاتے ہیں۔

عام پُراسرار اور بہترین مشق

  • قبل از دعا – ہمیشہ تصدیق کرنا ایک تقریبی نقطہ نظر نہیں ہے
  • ] اشارات غلط فہمیوں کی [[1] – کسی غلط دستخط کے ساتھ کام کرنا غیر منصفانہ سلوک کا باعث بنتا ہے۔
  • [1] کنونشن اختلافات کو بلانا – بعض پلیٹ فارمز پر، خاص طور پر جب C لائبریریوں کو دیگر زبانوں سے ملانا، کنونشنوں کو کہنا (مثلاً، ونڈوز پر میچ کرنا ضروری ہے۔
  • [Thread Prefecture – اگر کسی دعوتی بلے باز کو کئی ٹکڑوں سے پکارا جائے تو دعوتی کوڈ کو دوبارہ بحال یا درست طور پر درست بنایا جاتا ہے۔
  • زندگی بھر منطقی نقطہ نظررز – نقطہ نظر سے گزرنے والا نقطہ آغاز درست ہونے کے لئے تمام وقت کے لیے موزوں ہے دعوتی وقت پر فون کیا جا سکتا ہے.

ترقی‌پذیر علامات : sros of Fiction Pointers

اس کے علاوہ ، ایک ایسے کمپیوٹر کو بھی تیار کِیا جاتا ہے جو بہت سے آپریشنز کی مدد کرتا ہے :

typedef int (*Operation)(int, int);

int add(int x, int y) { return x + y; }
int sub(int x, int y) { return x - y; }
int mul(int x, int y) { return x * y; }
int divide(int x, int y) { return y ? x / y : 0; }

Operation operations[] = { add, sub, mul, divide };
const char* opNames[] = {"add", "sub", "mul", "div"};

int main() {
 int a = 10, b = 2;
 for (int i = 0; i < 4; ++i) {
 printf("%s: %d\n", opNames[i], operations[i](a, b));
 }
 return 0;
}

یہ انداز نگاری ہے اور زنجیروں سے بچنے کے لیے ۔

دیگر زبانوں سے بات‌چیت کریں

سی++ جیسے سرگرمیوں کا استعمال کرنے والے عام لوگوں کو استعمال کرتے ہوئے ، مگر تفریحی کام کرنے والوں ، بُراس اور [ فٹ‌نوٹ :27 ] کو زیادہ سے زیادہ دیکھ‌بھال کے لئے بھی پیش کِیا جاتا ہے ۔

پیشگی تجاویز

جدید CEUS اوور برانچ کی طرف سے باآسانی استعمال ہونے والی برانچ کی طرف سے مؤثر طور پر استعمال ہونے والی شاخیں بہت کم وقت پر کم استعمال کرتی ہیں ۔

حقیقی-world مثالیں C میں بلاول خانوں کی مثال ہیں۔

  • ] اشاراتی طور پر قابل ذکر علامات – ] آپریٹنگ سسٹم سگنلز کے لیے ایک دعوتی خاکہ درج کرتا ہے۔
  • [Thread actress – ایک تقریبی نقطہ نظر اور ایک تناظری دلیل قبول کرتا ہے۔
  • کم سطح کی لائبریریوں میں زیریں کیمرا ] – Lebv، Lebov اور اسی طرح کے واقعات لیبارٹریز کے لیے I/O، ٹائمز اور سگنل استعمال کرتے ہیں۔
  • ] کومسری طرز الجبرا میں کام کرتا ہے – اور سی معیاری لائبریری سے.
  • GUI Sulkits – FLT اور EFL (Proventation Foundation Libries) کے لیے دعوتی رد عمل استعمال کرتے ہیں۔

کُنَّا

صارف کو جمع کرنے کے لئے C پروگرامنگ کا ایک ذیلی سلسلہ ہے، بلال پھیر دینے کے قابل ہے جو ان کے اعلان کو سمجھ سکے،اور انہیں مختلف اندازوں سے استعمال کر کے،

مزید پڑھنے کے لیے C معیاری دستاویزات کا حوالہ دینے کے لیے پر مشتمل ہے اور یہ دریافت کریں کہ کیسے عملیاتی نقطہ نظر کو میں استعمال کیا جاتا ہے . [FLT:T]. [FLT:T] کے ساتھ مل کر اس واقعے پر مشتمل تقریب میں ایک گہرا دھنا دھنیں مل سکتی ہیں[FLTTT]