1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
/** * File: init.c * Author: Risto Heinsar * Created: 21.08.2014 * Modified: 28.09.2015 * * Description: Examples of how to initialize variables * and arrays in C code. */ #include <stdio.h> #define LEN_SMALL_ARR 3 #define LEN_BIG_ARR 5 #define LEN_PART_ARR 10 int main(void) { int i, j; int multipleVar1, multipleVar2, multipleVar3; int num = 5; int numA[] = {7, 3, 6, -4, 2}; int numB[LEN_PART_ARR] = {6, 1, 2, 4, -2}; int numC[LEN_BIG_ARR] = { 0 }; int numD[][LEN_SMALL_ARR] = {{6, 3, 1}, {9, -1, 7}}; int numE[LEN_BIG_ARR][LEN_BIG_ARR] = {{5, 3, 14, 3, 6}, {14, 3, -9, 2, 7}, {9, 1, 9, 2, 51}, {91, 0, 0, 1, 16}, {15, 43, 656, 1, 1}}; char greet[] = {"Hello, how are You?"}; char multipleWords[][7] = {"Hi,", "how", "are?", "You?"}; multipleVar1 = 15; multipleVar2 = 55; multipleVar3 = -43; puts("Printing single digit:"); printf("%d\n\n", num); puts("Printing multiple digits from multiple variables:"); printf("%d %d %d\n\n", multipleVar1, multipleVar2, multipleVar3); puts("Printing an array:"); printf("%2d %2d %2d %2d %2d\n\n", numA[0], numA[1], numA[2], numA[3], numA[4]); puts("Printing second array using a loop:"); for (i = 0; i < LEN_PART_ARR; i++) { printf("%2d ", numB[i]); } printf("\n\n"); puts("Printing the zero initialized array:"); for (i = 0; i < LEN_BIG_ARR; i++) { printf("%2d ", numC[i]); } printf("\n\n"); puts("Printing a matrix:"); printf("%2d %2d %2d\n%2d %2d %2d\n\n", numD[0][0], numD[0][1], numD[0][2], numD[1][0], numD[1][1], numD[1][2]); puts("Printing a word:"); printf("%s\n\n", greet); puts("Printing multiple words:"); printf("%s %s %s %s\n\n", multipleWords[0], multipleWords[1], multipleWords[2], multipleWords[3]); puts("Printing the large array:"); for (i = 0; i < LEN_BIG_ARR; i++) { for (j = 0; j < LEN_BIG_ARR; j++) { printf("%4d", numE[i][j]); } putchar('\n'); } return 0; } |
- Deklareerides mitu muutujat ühel real ei tohiks neid samaaegselt algväärtustada (multipleVar). Üksiku muutuja deklaratsiooni võib ka algväärtustada koheselt (num).
- numA massiivi suuruse võib jätta määramata, kui see algväärtustatakse. Massiivi suurus määratakse algväärtustatud arvude hulgaga – hetkel oleks massiiv 5-liikmeline
- numB massiivi korral on märgitud suurus pikem kui algväärtustatud liikmete hulk. Sedasi algväärtustatakse esimesed 5 liiget, kuid ruumi antakse kümnele. Viimased 5 saavad oma väärtusteks nullid.
- numC puhul on tegu null-initsialiseeritud massiiviga. St kõik massiivi liikmed saavad enda väärtuseks nullid.
- numD korral on tegu kahedimensioonilise massiivi (maatriksiga). Mitmedimensionaalsete massiivide puhul võib jätta määramata vaid ühe dimensiooni suuruse. Praegusel juhul arvestatakse suurus vastavalt algväärtustatud arvude hulgale. Antud näites tuleks see 2×3 maatriks. Selguse mõttes tasub aga kindlasti kõik dimensioonid määrata.
- numE – veidi suurema maatriksi puhul tasub see kirjutada mitmele reale. Sama nagu eelmine.
- Tähemärgimassiiv greet, kus iga täht on üks massiivi element. Massiivi pikkus on tähemärkide arv + 1.
- Tähemärgimassiiv multipleWords hoiab iga sõna eraldi reana. Iga sõna jaoks on ruumi kuuele tähemärgile. Sõnad asuvad kohtadel multipleWords[0], multipleWords[1] jne. Tähemärgi saamiseks peab määrama mõlemad dimensioonid eraldi nagu numbritest koosnevates maatriksites, st tähemärgid asuvad multipleWords[0][0], multiplewords[0][1], …