پارامترهای تابع

آشنایی با پارامترهای تابع، ارسال با مقدار و ارسال با مرجع

پارامترهای تابع

پارامترها (Parameters) مقادیری هستند که به تابع ارسال می‌شوند و تابع می‌تواند از آن‌ها استفاده کند.

پارامترهای ورودی

void printInfo(string name, int age) {
    cout << "نام: " << name << endl;
    cout << "سن: " << age << endl;
}

ارسال با مقدار (Pass by Value)

در این روش، یک کپی از مقدار ارسال می‌شود و تغییرات روی اصل تأثیری ندارد.

void modifyValue(int x) {
    x = 100;  // فقط روی کپی تأثیر دارد
}

int main() {
    int num = 5;
    modifyValue(num);
    cout << num;  // هنوز 5 است
    return 0;
}

ارسال با مرجع (Pass by Reference)

در این روش، مرجع متغیر ارسال می‌شود و تغییرات روی اصل اعمال می‌شود.

void modifyValue(int &x) {
    x = 100;  // روی اصل تأثیر دارد
}

int main() {
    int num = 5;
    modifyValue(num);
    cout << num;  // 100 شده است
    return 0;
}

مقایسه ارسال با مقدار و مرجع

ویژگیبا مقداربا مرجع
کپیبلهخیر
تغییر اصلخیربله
سرعتکندتر برای اشیاء بزرگسریع‌تر
حافظهبیشترکمتر

پارامترهای پیش‌فرض

void greet(string name, string title = "آقای") {
    cout << title << " " << name << endl;
}

int main() {
    greet("علی");           // آقای علی
    greet("مریم", "خانم");  // خانم مریم
    return 0;
}

تعداد متغیر پارامترها (Variadic Functions)

از C++11 به بعد

#include <iostream>
#include <cstdarg>
using namespace std;

int sum(int count, ...) {
    va_list args;
    va_start(args, count);
    
    int total = 0;
    for (int i = 0; i < count; i++) {
        total += va_arg(args, int);
    }
    
    va_end(args);
    return total;
}

int main() {
    cout << sum(3, 1, 2, 3) << endl;      // 6
    cout << sum(5, 1, 2, 3, 4, 5) << endl; // 15
    return 0;
}

پارامترهای const

void printString(const string &str) {
    cout << str << endl;
    // نمی‌توان str را تغییر داد
}

بهترین شیوه‌ها

نکات مهم

این مبحث بخشی از دوره آموزش کامل C++ است.

ابزارهای مرتبط