زبان برنامه نویسی C چیست؟ آموزش کامل و جامع C
فهرست مطالب
زبان C چیست؟
زبان برنامهنویسی C یک زبان برنامهنویسی همه منظوره، ساختیافته و سطح میانی است که برای توسعه سیستمهای عامل، درایورها و برنامههای کاربردی استفاده میشود.
#include <stdio.h>
int main() {
printf("سلام دنیا!\n");
return 0;
}
تاریخچه زبان C
زبان C در سال ۱۹۷۲ توسط دنیس ریچی در آزمایشگاههای بل برای سیستم عامل یونیکس توسعه داده شد. این زبان از B و BCPL الهام گرفته شده است.
ساختار پایه برنامههای C
هر برنامه C از چندین بخش اصلی تشکیل شده است:
#include <stdio.h> // هدرها
#include <stdlib.h>
// تعریف ثابتها
#define MAX_SIZE 100
// تعریف توابع
void printMessage(char* msg) {
printf("%s\n", msg);
}
// تابع اصلی برنامه
int main() {
printMessage("سلام دنیا!");
return 0;
}
انواع داده در C
زبان C انواع دادههای مختلفی را پشتیبانی میکند که برای ذخیرهسازی مقادیر مختلف استفاده میشوند.
انواع دادههای اصلی
// اعداد صحیح
int number = 42; // عدد صحیح معمولی
short small = 123; // عدد صحیح کوچک
long big = 123456789L; // عدد صحیح بزرگ
// اعداد اعشاری
float decimal = 3.14f; // اعشاری با دقت تک
double precise = 3.14159; // اعشاری با دقت مضاعف
// کاراکترها
char letter = 'A'; // یک کاراکتر
// مقادیر منطقی
int boolean = 0; // در C صفر معادل false است
// و هر مقدار غیر صفر معادل true
عملگرها در C
عملگرها در C برای انجام عملیات مختلف روی دادهها استفاده میشوند.
عملگرهای اصلی
// عملگرهای محاسباتی
int a = 10 + 5; // جمع: 15
int b = 10 - 5; // تفریق: 5
int c = 10 * 5; // ضرب: 50
int d = 10 / 5; // تقسیم: 2
int e = 10 % 3; // باقیمانده: 1
// عملگرهای مقایسهای
int isEqual = (5 == 5); // true (1)
int isGreater = (10 > 5); // true (1)
int isLess = (3 < 5); // true (1)
// عملگرهای منطقی
int and = (1 && 1); // true (1)
int or = (1 || 0); // true (1)
int not = !1; // false (0)
ساختارهای کنترلی
ساختارهای کنترلی برای کنترل جریان اجرای برنامه استفاده میشوند.
// ساختار شرطی if
if (score >= 60) {
printf("قبول شدید!\n");
} else {
printf("متأسفانه قبول نشدید.\n");
}
// حلقه while
int i = 0;
while (i < 5) {
printf("%d ", i);
i++;
}
// حلقه for
for (int j = 0; j < 5; j++) {
printf("%d ", j);
}
// switch
switch (grade) {
case 'A':
printf("عالی!\n");
break;
case 'B':
printf("خوب\n");
break;
default:
printf("نامشخص\n");
}
توابع در C
توابع بخشهای مستقل و قابل استفاده مجدد کد هستند که وظیفه خاصی را انجام میدهند.
// تعریف تابع محاسبه مجموع
int sum(int a, int b) {
return a + b;
}
// تابع بدون مقدار برگشتی
void printMessage(char* msg) {
printf("%s\n", msg);
}
// تابع با پارامترهای متغیر
int max(int count, ...) {
va_list args;
va_start(args, count);
int max_value = va_arg(args, int);
for(int i = 1; i < count; i++) {
int value = va_arg(args, int);
if(value > max_value) max_value = value;
}
va_end(args);
return max_value;
}
آرایهها و رشتهها
آرایهها مجموعهای از عناصر همنوع هستند که در مکانهای متوالی حافظه ذخیره میشوند.
// تعریف و مقداردهی آرایه
int numbers[5] = {1, 2, 3, 4, 5};
// تعریف رشته (آرایهای از کاراکترها)
char name[20] = "محمد";
// آرایه دو بعدی
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// عملیات روی رشتهها
char str1[50] = "سلام ";
char str2[] = "دنیا";
strcat(str1, str2); // اتصال رشتهها
printf("%s\n", str1); // نمایش: سلام دنیا
اشارهگرها
اشارهگرها یکی از قدرتمندترین ویژگیهای زبان C هستند که امکان دسترسی مستقیم به حافظه را فراهم میکنند.
int x = 10;
int *ptr = &x; // ptr آدرس x را نگه میدارد
printf("مقدار x: %d\n", x); // 10
printf("آدرس x: %p\n", &x); // آدرس حافظه
printf("مقدار اشارهگر: %d\n", *ptr); // 10
// اشارهگر به آرایه
int arr[5] = {1, 2, 3, 4, 5};
int *arrPtr = arr;
// حرکت در آرایه با اشارهگر
for(int i = 0; i < 5; i++) {
printf("%d ", *(arrPtr + i));
}
مدیریت حافظه
در C، برنامهنویس مسئول تخصیص و آزادسازی حافظه پویا است.
#include <stdlib.h>
// تخصیص حافظه برای یک عدد صحیح
int *ptr = (int *)malloc(sizeof(int));
*ptr = 42;
// تخصیص حافظه برای آرایه
int *arr = (int *)malloc(5 * sizeof(int));
for(int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
// آزادسازی حافظه
free(ptr);
free(arr);
// تغییر اندازه حافظه تخصیص یافته
arr = (int *)realloc(arr, 10 * sizeof(int));