Menu
Coddy logo textTech

C Cheat Sheet: דף עזר מהיר

עודכן לאחרונה

Hello World ומבנה התוכנית

כל תוכנית C מתחילה ב-main ומחזירה int.

רכיבקוד
הכללת קובץ כותרת#include <stdio.h>
נקודת כניסהint main(void) { ... }
עם ארגומנטים משורת הפקודהint main(int argc, char *argv[]) { ... }
הדפסת שורהprintf("Hello, World!\n");
החזרת הצלחהreturn 0;
הערה בשורה אחת// comment
הערת בלוק/* comment */

טיפוסי נתונים

הגדלים תלויים בפלטפורמה; המינימום שלמטה מובטח על ידי התקן.

טיפוסתיאור
intמספר שלם, לפחות 16 ביט (בדרך כלל 32)
unsigned intמספר שלם אי-שלילי
long / long longמספרים שלמים רחבים יותר (לפחות 32 / 64 ביט)
float / doubleנקודה צפה בדיוק יחיד / כפול
charבייט יחיד, משמש גם לתווים
_Bool (bool דרך <stdbool.h>)true או false
size_tטיפוס ללא סימן לגדלים ולאינדקסים
voidללא טיפוס: משמש לפונקציות ולמצביעים גנריים

מצייני פורמט של printf ו-scanf

ממלאי מקום שתואמים לטיפוס של כל ארגומנט.

מצייןמתאים ל
%d / %iint עם סימן
%uint ללא סימן
%ld / %lldlong / long long
%fdouble (וגם float ב-printf)
%.2fdouble עם 2 ספרות אחרי הנקודה
%cchar בודד
%sמחרוזת (char *)
%pכתובת של מצביע
%xint ללא סימן בהקסדצימלי
%zusize_t

אופרטורים

אופרטורמשמעות
+ - * / %אריתמטיקה (% הוא שארית חלוקה של שלמים)
== !=שווה / לא שווה
< > <= >=השוואה
&& || !וגם / או / לא לוגיים
& | ^ ~ << >>and, or, xor, not ברמת הביט, והזזות
++ --הגדלה / הקטנה ב-1
+= -= *= /=השמה מורכבת
cond ? a : bתנאי טרינרי
sizeof(x)גודל של טיפוס או משתנה בבייטים

בקרת זרימה

משפטתחביר
If / elseif (x > 0) { ... } else { ... }
Else ifelse if (x == 0) { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
לולאת whilewhile (i < n) { ... }
לולאת do-whiledo { ... } while (i < n);
לולאת forfor (int i = 0; i < n; i++) { ... }
Break / continuebreak; יוצא מהלולאה, continue; מדלג לאיטרציה הבאה
Goto (נדיר)goto label; ... label:

פונקציות

הצהירו לפני השימוש, או הוסיפו אב טיפוס בראש הקובץ.

פעולהתחביר
הגדרת פונקציהint add(int a, int b) { return a + b; }
אב טיפוס (הצהרה)int add(int a, int b);
ללא ערך החזרהvoid greet(void) { ... }
ללא פרמטריםint rand_seed(void) { ... }
העברה דרך מצביע (לשינוי)void inc(int *p) { (*p)++; }
העברת מערךint sum(int arr[], int n) { ... }
Static (מקומי לקובץ)static int helper(void) { ... }

מצביעים וזיכרון

מצביע מחזיק כתובת. את זיכרון ה-heap צריך לשחרר ידנית.

פעולהתחביר
הצהרה על מצביעint *p;
לקיחת כתובתp = &x;
גישה דרך מצביע (קריאה/כתיבה)int y = *p; / *p = 10;
מצביע nullint *p = NULL;
הקצאה ב-heapint *a = malloc(n * sizeof(int));
הקצאה + איפוסint *a = calloc(n, sizeof(int));
שינוי גודל הקצאהa = realloc(a, newSize);
שחרור זיכרון heapfree(a);
אריתמטיקה של מצביעים*(a + i) זהה ל-a[i]

מערכים ומחרוזות

מחרוזות ב-C הן מערכי char שמסתיימים ב-\0.

פעולהתחביר
הצהרה על מערךint nums[5];
אתחול מערךint nums[] = {1, 2, 3};
גישה לאיברnums[0] = 10;
אורך מערך (מערכים על ה-stack)sizeof(nums) / sizeof(nums[0])
מחרוזת ליטרליתchar s[] = "hello";
אורך מחרוזתstrlen(s) (לא כולל \0)
העתקת מחרוזתstrcpy(dst, src);
השוואת מחרוזותstrcmp(a, b) == 0 פירושו שוות
שרשור מחרוזותstrcat(dst, src);

Structs ופונקציות נפוצות מהספרייה הסטנדרטית

פעולהתחביר
הגדרת structstruct Point { int x; int y; };
הצהרה וגישהstruct Point p; p.x = 1;
גישה דרך מצביעp->x = 1; (זהה ל-(*p).x)
כינוי לטיפוסtypedef struct Point Point;
קריאת קלטscanf("%d", &n);
המרת מחרוזת ל-intint n = atoi("42");
ערך מוחלט / חזקהabs(x) (int), pow(x, y) מתוך <math.h>
מיון מערךqsort(arr, n, sizeof(int), cmp);

התחביר, מצייני הפורמט ודפוסי המצביעים של C שהכי שימושיים, בעמוד אחד. ה-C cheat sheet הזה הוא דף עזר מהיר לכתיבת C: טיפוסי הנתונים, מצייני printf/scanf, אופרטורים, בקרת זרימה, ופעולות המצביעים והזיכרון שמכשילות רבים.

כל מה שכאן הוא C סטנדרטי (C99/C11) ומתקמפל עם gcc או clang. העתיקו את מה שצריך, או נסו כל קטע קוד בזמן אמת בעורך האונליין של C, בלי להתקין קומפיילר. לומדים C? קורס C האינטראקטיבי והחינמי של Coddy מלמד מצביעים, זיכרון והספרייה הסטנדרטית בצורה מעשית.

שאלות נפוצות על ה-C cheat sheet

האם ה-C cheat sheet הזה בחינם?
כן. ה-C cheat sheet הזה חינמי לגמרי, בלי צורך בהרשמה. שמרו אותו במועדפים וחזרו אליו בכל פעם שצריך לבדוק טיפוס, מציין פורמט או פעולת מצביע.
מה ההבדל בין ה-stack ל-heap ב-C?
זיכרון ה-stack מחזיק משתנים מקומיים ומשתחרר אוטומטית כשפונקציה מחזירה ערך: מהיר, אבל מוגבל בגודלו. זיכרון ה-heap מוקצה במפורש עם malloc או calloc, נשאר קיים עד שקוראים ל-free, ומשמש כשצריך זיכרון שחי יותר מהפונקציה הנוכחית או שגודלו ידוע רק בזמן ריצה. שכחה לקרוא ל-free על זיכרון heap גורמת לדליפת זיכרון.
למה scanf צריך אמפרסנד (&) ו-printf לא?
scanf כותב את הערך בחזרה לתוך המשתנה שלכם, ולכן הוא צריך את הכתובת של המשתנה, וזה בדיוק מה ש-&x נותן לו. printf רק קורא את הערך, ולכן מעבירים את הערך עצמו. היוצא מן הכלל הוא מחרוזות: מערך char כבר מתנוון למצביע, ולכן מעבירים scanf("%s", name) בלי ה-&.
אפשר לתרגל C אונליין?
כן. פתחו את עורך האונליין של C כדי לקמפל ולהריץ כל קטע קוד מדף העזר הזה בדפדפן, בלי להתקין קומפיילר. כשתרצו מסגרת מסודרת, קורס C האינטראקטיבי והחינמי של Coddy לוקח אתכם צעד אחר צעד ממשתנים ולולאות ועד מצביעים וניהול זיכרון.
האם דף העזר הזה מתאים למתחילים?
כן. הוא מסודר מאבני הבניין הנפוצות ביותר (טיפוסים, printf, בקרת זרימה) ועד המתקדמות (מצביעים, זיכרון, structs), כך שאפשר להשתמש בחלקים העליונים כבר מהיום הראשון ולהתקדם לשאר בהמשך.
איור של שפות התכנות ב-Coddy

ללמוד C עם Coddy

להתחיל