در زبان C، اغلب نیاز به تعریف و مدیریت چندین متغیر بهطور همزمان داریم. C روشهای مختلفی برای تعریف، مقداردهی و استفاده از متغیرهای چندگانه ارائه میدهد که باعث افزایش خوانایی و کارایی کد میشود .
این درس به بررسی روشهای مختلف کار با چندین متغیر، از تعریف ساده تا تکنیکهای پیشرفتهتر مانند انتساب زنجیرهای و استفاده از آرایهها میپردازد .
سادهترین روش برای تعریف چندین متغیر، ذکر نام آنها بهصورت جدا شده با کاما (,) در یک خط است :
int x, y, z; // سه متغیر صحیح float a, b, c; // سه متغیر اعشاری char ch1, ch2, ch3; // سه متغیر کاراکتری
همچنین میتوان برخی یا همهٔ آنها را مقداردهی اولیه کرد:
int p = 10, q = 20, r = 30; // هر سه مقداردهی شدهاند int m = 5, n, o = 8; // m و o مقداردهی شده، n بدون مقدار float temp = 36.5, humidity; // temp مقداردهی شده، humidity بدون مقدار
نکته مهم: متغیرهایی که در یک خط تعریف میشوند، همگی از یک نوع هستند. اگر نیاز به انواع مختلف دارید، باید از خطوط جداگانه استفاده کنید .
برای خوانایی بهتر، بهخصوص وقتی متغیرها انواع مختلفی دارند یا نیاز به توضیح جداگانه دارند، بهتر است هر متغیر را در یک خط جداگانه تعریف کنید:
int count; // تعداد آیتمها float price; // قیمت هر آیتم char currency; // واحد پول double total; // جمع کل
این روش باعث میشود کد خواناتر باشد و افزودن کامنت برای هر متغیر آسانتر است.
C اجازه میدهد چندین متغیر را در یک عبارت به یک مقدار واحد نسبت دهید. این کار با استفاده از عملگر انتساب بهصورت زنجیرهای انجام میشود:
int a, b, c; a = b = c = 10; // هر سه متغیر مقدار 10 را میگیرند
ترتیب اجرا از راست به چپ است:
c = 10 (c مقدار 10 میگیرد)
b = c (b مقدار c یعنی 10 را میگیرد)
a = b (a مقدار b یعنی 10 را میگیرد)
میتوان از عملگرهای انتساب مختصر نیز در زنجیره استفاده کرد، هرچند این کار کمتر رایج است:
int x, y, z; x = y = z = 0; // هر سه صفر میشوند x += y += z += 5; // z=5, y=5, x=5 (همه 5 میشوند)
نکته: انتساب زنجیرهای فقط برای مقداردهی اولیه یا تنظیم مجدد متغیرها به یک مقدار واحد مفید است و نمیتوان از آن برای مقداردهی به متغیرهایی با انواع مختلف استفاده کرد .
یکی از کاربردهای رایج متغیرهای چندگانه، جابهجایی مقادیر دو متغیر با استفاده از یک متغیر موقت است:
int a = 5, b = 10; int temp; printf("Before: a=%d, b=%d\n", a, b); temp = a; // temp = 5 a = b; // a = 10 b = temp; // b = 5 printf("After: a=%d, b=%d\n", a, b);
خروجی:
Before: a=5, b=10 After: a=10, b=5
در برخی موارد میتوان بدون متغیر موقت نیز جابهجایی انجام داد، اما این روش خطر سرریز (Overflow) دارد:
int a = 5, b = 10; a = a + b; // a = 15 b = a - b; // b = 5 a = a - b; // a = 10 printf("a=%d, b=%d\n", a, b); // خروجی: a=10, b=5
نکته حرفهای: روش استاندارد و امن برای جابهجایی، استفاده از متغیر موقت است. در برنامهنویسی مدرن C، استفاده از متغیر موقت خوانایی بیشتری دارد و از خطاهای احتمالی جلوگیری میکند .
هنگام فراخوانی توابع، میتوان چندین آرگومان را بهطور همزمان ارسال کرد:
#include <stdio.h> // تابعی برای محاسبهٔ مجموع و تفاضل دو عدد void calculate(int a, int b, int *sum, int *diff) { *sum = a + b; *diff = a - b; } int main() { int x = 10, y = 5; int s, d; calculate(x, y, &s, &d); // ارسال چندین آرگومان printf("Sum: %d, Diff: %d\n", s, d); return 0; }
در حلقههای for، میتوان چندین متغیر را در بخشهای مختلف تعریف و مدیریت کرد:
#include <stdio.h> int main() { // استفاده از چندین متغیر در حلقه for for (int i = 0, j = 10; i < j; i++, j--) { printf("i=%d, j=%d\n", i, j); } // حلقه با سه متغیر for (int a = 0, b = 5, c = 10; a <= 5; a++, b--, c += 2) { printf("a=%d, b=%d, c=%d\n", a, b, c); } return 0; }
خروجی نمونه:
i=0, j=10 i=1, j=9 i=2, j=8 i=3, j=7 i=4, j=6
نکته: در بخش اولیهٔ حلقه
for، میتوان چندین متغیر از یک نوع را با کاما از هم جدا کرد. برای انواع مختلف، باید از روشهای دیگر استفاده کرد .
وقتی به تعداد زیادی متغیر از یک نوع نیاز دارید، بهجای تعریف متغیرهای جداگانه، از آرایهها (Arrays) استفاده میشود:
// تعریف ۵ متغیر جداگانه (روش غیرحرفهای) int score1 = 85, score2 = 90, score3 = 78, score4 = 92, score5 = 88; // تعریف یک آرایه از ۵ عدد (روش حرفهای) int scores[5] = {85, 90, 78, 92, 88}; // دسترسی به اعضای آرایه با ایندکس printf("Score 1: %d\n", scores[0]); // 85 printf("Score 2: %d\n", scores[1]); // 90
آرایهها امکان پیمایش و پردازش دستهجمعی دادهها را فراهم میکنند:
#include <stdio.h> int main() { int scores[5] = {85, 90, 78, 92, 88}; int sum = 0; float average; // محاسبهٔ مجموع با استفاده از حلقه for (int i = 0; i < 5; i++) { sum += scores[i]; } average = (float)sum / 5; printf("Average score: %.2f\n", average); return 0; }
خروجی:
Average score: 86.60
برای گروهبندی متغیرهایی با انواع مختلف که به یک موجودیت تعلق دارند، از ساختارها استفاده میشود:
#include <stdio.h> #include <string.h> // تعریف یک ساختار برای ذخیرهٔ اطلاعات دانشجو struct Student { char name[50]; int age; float gpa; char grade; }; int main() { // ایجاد یک متغیر از نوع ساختار struct Student student1; // مقداردهی به اعضای ساختار strcpy(student1.name, "Ali Rezaei"); student1.age = 20; student1.gpa = 18.5; student1.grade = 'A'; // چاپ اطلاعات printf("Name: %s\n", student1.name); printf("Age: %d\n", student1.age); printf("GPA: %.1f\n", student1.gpa); printf("Grade: %c\n", student1.grade); return 0; }
#include <stdio.h> #include <math.h> int main() { // تعریف متغیرهای مورد نیاز int v1 = 10, v2 = 20, v3 = 30, v4 = 40, v5 = 50; int sum, count = 5; float mean, variance, std_dev; // محاسبهٔ مجموع sum = v1 + v2 + v3 + v4 + v5; // محاسبهٔ میانگین mean = (float)sum / count; // محاسبهٔ واریانس variance = (pow(v1 - mean, 2) + pow(v2 - mean, 2) + pow(v3 - mean, 2) + pow(v4 - mean, 2) + pow(v5 - mean, 2)) / count; // محاسبهٔ انحراف معیار std_dev = sqrt(variance); printf("Mean: %.2f\n", mean); printf("Standard Deviation: %.2f\n", std_dev); return 0; }
#include <stdio.h> int main() { // تعریف متغیرهای مربوط به حساب بانکی float balance = 1000.0; // موجودی اولیه float deposit = 500.0; // واریز float withdrawal = 200.0; // برداشت float fee = 2.5; // کارمزد // انجام عملیات balance += deposit; // واریز printf("After deposit: %.2f\n", balance); balance -= withdrawal; // برداشت printf("After withdrawal: %.2f\n", balance); balance -= fee; // کسر کارمزد printf("After fee: %.2f\n", balance); // محاسبهٔ آمار float total_in = deposit; float total_out = withdrawal + fee; float net_change = total_in - total_out; printf("\nSummary:\n"); printf("Total in: %.2f\n", total_in); printf("Total out: %.2f\n", total_out); printf("Net change: %.2f\n", net_change); printf("Final balance: %.2f\n", balance); return 0; }
#include <stdio.h> int main() { // تعریف دماها در واحدهای مختلف float celsius = 25.0; float fahrenheit, kelvin; // تبدیل به سایر واحدها fahrenheit = (celsius * 9.0 / 5.0) + 32.0; kelvin = celsius + 273.15; // نمایش همهٔ مقادیر printf("Temperature Conversions:\n"); printf("Celsius: %.1f°C\n", celsius); printf("Fahrenheit: %.1f°F\n", fahrenheit); printf("Kelvin: %.2fK\n", kelvin); // تغییر دما printf("\nChanging temperature...\n"); celsius = 100.0; // دمای جوش fahrenheit = (celsius * 9.0 / 5.0) + 32.0; kelvin = celsius + 273.15; printf("New values:\n"); printf("Celsius: %.1f°C\n", celsius); printf("Fahrenheit: %.1f°F\n", fahrenheit); printf("Kelvin: %.2fK\n", kelvin); return 0; }
int x = 5, y = 10, // ❌ باید سمیکالن باشد
int x = 5; int x = 10; // ❌ خطا: تعریف مجدد
int a = 5, b = 10, c = 15; a = b = c + 5; // c+5 = 20, سپس b=20, سپس a=20 // نتیجه: a=20, b=20, c=15
int x = 5, float y = 10; // ❌ خطا: نمیتوان انواع را در یک خط مخلوط کرد
میتوان چندین متغیر از یک نوع را در یک خط با کاما تعریف کرد
برای خوانایی بیشتر، متغیرهایی با انواع مختلف را در خطوط جداگانه تعریف کنید
انتساب زنجیرهای (a = b = c = 10) برای مقداردهی یکسان به چند متغیر مفید است
برای جابهجایی مقادیر دو متغیر از متغیر موقت استفاده کنید
در حلقههای for میتوان چندین متغیر را مدیریت کرد
برای دادههای همنوع زیاد، از آرایهها استفاده کنید
برای گروهبندی متغیرهایی با انواع مختلف، از ساختارها استفاده کنید
دقت کنید که متغیرها را در محدودهٔ (Scope) مناسب تعریف و مقداردهی کنید
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات