پارامترها و آرگومانها
تفاوت پارامتر و آرگومان، آرگومانهای پیشفرضناپذیر و پاس دادن با مقدار
پارامتر و آرگومان
این دو اصطلاح اغلب بهجای هم استفاده میشوند اما تفاوت دارند:
- پارامتر (Parameter) — متغیرهای موجود در تعریف تابع
- آرگومان (Argument) — مقادیر واقعی که هنگام فراخوانی ارسال میشوند
int add(int a, int b) { // a و b پارامتر هستند
return a + b;
}
add(5, 3); // 5 و 3 آرگومان هستند
چند پارامتر
پارامترها با کاما جدا میشوند و هر کدام نوع خودشان را دارند:
void printInfo(char name[], int age, float height) {
printf("%s is %d years old and %.2f meters tall", name, age, height);
}
پاس دادن با مقدار (Pass by Value)
نکته مهم: در C آرگومانها با مقدار پاس داده میشوند. یعنی یک کپی از مقدار به تابع میرسد و تغییر آن داخل تابع، متغیر اصلی را تغییر نمیدهد:
void changeValue(int x) {
x = 100; // فقط کپی تغییر میکند
}
int main() {
int num = 50;
changeValue(num);
printf("%d", num); // هنوز 50 است!
}
برای تغییر متغیر اصلی باید از اشارهگر استفاده کرد که در بخش بعدی میآموزید.
تعداد و ترتیب آرگومانها
آرگومانها باید از نظر تعداد، نوع و ترتیب با پارامترها مطابقت داشته باشند:
void printInfo(char name[], int age) { ... }
printInfo("Ali", 25); // ✅ درست
printInfo(25, "Ali"); // ❌ ترتیب اشتباه
نکات مهم
- در C برخلاف C++ مقدار پیشفرض برای پارامترها وجود ندارد — همیشه همه آرگومانها را بفرستید
- نام پارامترها در تعریف و اعلان میتواند متفاوت باشد اما بهتر است یکسان باشد
- در اعلان (prototype) میتوان فقط نوعها را نوشت:
int add(int, int);
این مبحث بخشی از دوره آموزش کامل زبان C است.