সি প্রোগ্রামিং এইচটিএমএল সিএসএস জাভাস্ক্রিপ্ট পিএইচপি এসকিউএল
ফোরাম
×

 সি টিউটোরিয়াল

সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার

সি কন্ট্রোল স্টেটমেন্ট

সি ইফ সি ইফ...ইলস সি ফর লুপ সি হোহাইল লুপ সি ডু...হোহাইল লুপ সি ব্রেক সি কন্টিনিউ সি সুইচ স্টেটমেন্ট সি goto স্টেটমেন্ট

 সি ফাংশন

সি ফাংশন পরিচিতি সি ইউজার কর্তৃক ফাংশন সি ফাংশন টাইপ সি রিকার্সন সি ভ্যারিয়েবল স্কোপ

 সি অ্যারে

সি অ্যারে পরিচিতি সি মালটি-ডাইমেনশনাল অ্যারে সি অ্যারে ফাংশন

 সি স্ট্রিং

সি স্ট্রিং সি স্ট্রিং ফাংশন

 সি পয়েন্টার

সি পয়েন্টার পরিচিত সি পয়েন্টার অ্যারে সি পয়েন্টার ফাংশন সি মেমোরি ম্যানেজমেন্ট

 সি ফাইল এবং স্ট্রাকচার

স্ট্রাকচার পরিচিত স্ট্রাকচার ও পয়েন্টার সি স্ট্রাকচার ও ফাংশন সি ইউনিয়ন ফাইল হ্যান্ডেলিং

 সি অতিরিক্ত টিউটোরিয়াল

সি লাইব্রেরী সি প্রিপ্রোসেসর এবং ম্যাক্রো সি ইনুমিরেশন সি এরর নিয়ন্ত্রণ সি টাইপ কাস্টিং সি বিট ফিল্ড সি ভ্যারিয়েবল আর্গুমেন্ট সি কমান্ড লাইন আর্গুমেন্ট

 

পয়েন্টারঃ রেফারেন্স কর্তৃক ফাংশন কল করা


এই অধ্যায়ে আপনি পয়েন্টারকে ফাংশনের আর্গুমেন্ট(argument) হিসাবে অতিক্রম(pass) করানো শিখবেন। এছাড়া আপনার প্রোগ্রামে সঠিকভবে পয়েন্টার ব্যবহার করা শিখবেন।


ফাংশন এর মধ্যে দিয়ে pointer কে যখন আর্গুমেন্ট হিসাবে অতিক্রম করানো হয় তখন ভ্যালুর পরিবর্তে মেমোরি লোকেশনের এড্রেস অতিক্রম হয়।

কারণ সি প্রোগ্রামিং এ পয়েন্টার ভ্যালু জমা রাখার পরিবর্তে মেমোরির লোকেশনকে ভ্যালু হিসাবে জমা(store) রাখে।

উদাহরনঃ পয়েন্টার এবং ফাংশনের ব্যবহার

রেফারেন্স(reference) দ্বারা ফাংশন কল করে দুটি সংখ্যাকে বিনিময়(swap) করার জন্য সি প্রোগ্রাম

/* পয়েন্টার এবং ফাংশন ব্যবহার করে দুটি সংখ্যা বিনিময়(swap) এর জন্য সি প্রোগ্রাম*/
#include <stdio.h>
void swap(int *n1, int *n2);

int main()
{
    int num1 = 5, num2 = 10;

    // num1 এবং num2 এর এড্রেসকে  swap() ফাংশনের মধ্যে দিয়ে অতিক্রম করানো হয়। 
    swap( &num1, &num2);
    printf("Number1 = %d\n", num1);
    printf("Number2 = %d", num2);
    return 0;
}

void swap(int * n1, int * n2)
{
    // পয়েন্টার n1 এবং n2  যথাক্রমে num1 এবং num2 এর এড্রেসকে নির্দেশ(point) করে।
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

আউটপুট

Number1 = 10
Number2 = 5

উপরের উদাহরণের ব্যাখ্যাঃ

  • num1 এবং num2 ভ্যারিয়েবলের মেমোরি লোকেশনের এড্রেসকে swap() ফাংশনের মধ্যে দিয়ে অতিক্রম করানো হয়। পয়েন্টার *n1 এবং *n2 ঐ এড্রেস-সমূহকে ভ্যালু হিসাবে গ্রহণ করে।
  • সুতরাং এখন পয়েন্টার n1 এবং n2 যথাক্রমে num1 এবং num2 এর এড্রেসকে নির্দেশ(point) করে।
  • পয়েন্টারের ভ্যালু যখন পরিবর্তন হয় তখন মেমোরি লোকেশনে নির্দেশিত(pointed) ভ্যালুও যথাক্রমে পরিবর্তন হয়।
  • সুতরাং পয়েন্টার *n1 এবং *n2 তে পরিবর্তন ঘটলে main() ফাংশনের num1 এবং num2 তেও পরিবর্তন ঘটে।

এই কৌশলকে সি প্রোগ্রামিং এ রেফারেন্স কর্তৃক(Call by Reference) কল করা বলা হয়।