Aller au contenu

C/Tabilao sy mpanoro ova

Avy amin'i Wikibooks
< C
(tonga teto avy amin'ny C/Tabilao)

Torolàlana Fototra amin'ny Tabilao sy Mpanoro ova amin'ny Fiteny C

[hanova]

Ny tabilao (na arrays) sy ppanoro ova dia ampahany lehibe amin'ny fiteny C, izay manamora ny fitantanana angona sy ny fampiasana loharanon-karena amin'ny fandaharana. Ity cheatsheet ity dia manome topi-maso fohy momba ny fampiasana tabilao sy ppanoro ova amin'ny C.

Tabilao (Arrays)

[hanova]
  • Inona ny Tabilao?

Tabilao dia andiana fanova mitovitovy karazana izay voatahiry ao anaty bloky mitohy ao amin'ny memoire. Ny tabilao dia mamela ny fitahirizana angona maromaro ao anaty anaran-tsoratra tokana.

int isa[5] = {1, 2, 3, 4, 5};
  • Fidirana amin'ny Singa ao amin'ny Table

Azonao atao ny miditra amin'ny singa tsirairay ao amin'ny table amin'ny alalan'ny fanondroana ny index-nao.

int voalohany = isa[0]; // miditra amin'ny singa voalohany
int faharoa = isa[1]; // miditra amin'ny singa faharoa
  • Mamorona Tabilao Roa-naorina (2D Arrays)

Tabilao roa-naorina dia tabilao izay manana andalana sy andalana maromaro.

int matrix[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
  • Fidirana amin'ny Singa ao amin'ny Table Roa-naorina

Azonao atao ny miditra amin'ny singa ao amin'ny table roa-naorina amin'ny alalan'ny fampiasana index roa.

int sanda = matrix[1][2]; // miditra amin'ny singa amin'ny andalana faharoa sy andalana fahatelo

Mpanoro ova (Mpampitohy)

[hanova]
  • Inona ny Mpanoro ova?

Mpanoro ova dia fanova izay mitahiry ny adiresy memoire an'ny fanova hafa. Amin'ny fampiasana ppanoro ova, azonao atao ny miditra amin'ny angona amin'ny fomba tsy mivantana ary manatsara ny fahombiazana amin'ny fitantanana loharanon-karena.

int isa = 10;
int *p = &isa; // p dia mpanoro ova izay mitahiry ny adiresin'ny fanova isa
  • Fidirana amin'ny Sanda amin'ny alalan'ny Pointer

Amin'ny fampiasana mpanoro ova, azonao atao ny miditra amin'ny sanda ao amin'ny adiresy izay notondroiny.

printf("Ny sanda ao amin'ny isa dia %d\\n", *p); // mampiseho ny sanda 10
  • Mpanoro ova sy Tabilao

Tabilao dia mifandray akaiky amin'ny ppanoro ova satria ny anaran'ny table dia mpanoro ova izay manondro ny adiresy voalohany ao amin'ny table.

int isa[3] = {10, 20, 30};
int *p = isa; // p dia mpanoro ova manondro ny singa voalohany ao amin'ny table isa

printf("Ny sanda voalohany dia %d\\n", *p); // mampiseho ny sanda 10
printf("Ny sanda faharoa dia %d\\n", *(p + 1)); // mampiseho ny sanda 20
  • Mpanoro ova amin'ny Mpanoro ova

Azonao atao ny mamorona mpanoro ova izay manondro mpanoro ova hafa, antsoina hoe mpanoro ova-to-mpanoro ova.

int isa = 50;
int *p = &isa;
int **pp = &p; // pp dia mpanoro ova manondro ny mpanoro ova p

printf("Ny sanda ao amin'ny isa dia %d\\n", **pp); // mampiseho ny sanda 50

Fampiasana Mpanoro ova amin'ny Fomba (Functions)

[hanova]
  • Mandefa Mpanoro ova ho Parametra

Mpanoro ova dia ampiasaina matetika amin'ny fandefasana angona ho parametra amin'ny fomba iray, indrindra rehefa mila ovaina ny sanda amin'ny fanova tany am-boalohany.

void ovaina(int *p) {
    *p = 100; // manova ny sanda ao amin'ny adiresy notondroin'ny p
}

int main() {
    int isa = 10;
    ovaina(&isa); // mandefa ny adiresin'ny isa ho parametra
    printf("Ny sanda vaovao ao amin'ny isa dia %d\\n", isa); // mampiseho ny sanda 100
    return 0;
}

Torolàlana momba ny Mpanoro Ova Mandroso amin'ny Fiteny C

[hanova]

Ny mpanoro ova dia ampahany tena manan-danja amin'ny fiteny C, indrindra rehefa mila fitantanana angona sy loharanon-karena amin'ny fomba mandroso sy mahomby. Ity torolàlana ity dia hanazava ny foto-kevitra mandroso momba ny mpanoro ova amin'ny fiteny C.

Fampidirana momba ny Mpanoro Ova Mandroso

[hanova]

Mpanoro ova dia fanova izay mitahiry ny adiresin'ny fanova hafa ao amin'ny memoire. Amin'ny fampiasana mpanoro ova, azonao atao ny miditra mivantana amin'ny memoire, mitantana angona amin'ny fomba mahomby, ary manao asa maro izay tsy azo atao amin'ny fanova tsotra.

Mpanoro Ova ho amin'ny Mpanoro Ova (Pointer to Pointer)

[hanova]

Mpanoro ova ho amin'ny mpanoro ova dia fotokevitra iray izay ahafahanao mamorona mpanoro ova izay manondro ny adiresin'ny mpanoro ova hafa. Ity dia ampiasaina matetika amin'ny fandaharana mandroso izay mila fitantanana loharanon-karena maro.

int isa = 50;
int *mpanoro = &isa;
int **mpanoro_mpanoro = &mpanoro; // mpanoro_mpanoro dia manondro ny mpanoro

printf("Ny sanda ao amin'ny isa dia: %d\\n", **mpanoro_mpanoro); // Mampiseho 50

Mpanoro Ova amin'ny Fomba (Functions)

[hanova]

Mpanoro ova dia matetika ampiasaina amin'ny fomba (functions) mba handefasana adiresy fanova ho parametra. Izany dia mamela ny fomba hanova ny sandan'ny fanova tany am-boalohany.

Ohatra amin'ny Mpanoro Ova ampiasaina amin'ny Fomba
void ovaina_sanda(int *mpanoro) {
    *mpanoro = 100; // Manova ny sanda ao amin'ny adiresy notondroin'ny mpanoro
}

int main() {
    int isa = 10;
    ovaina_sanda(&isa); // Mandefa ny adiresin'ny isa ho parametra
    printf("Ny sanda vaovao ao amin'ny isa dia: %d\\n", isa); // Mampiseho 100
    return 0;
}

Mpanoro Ova sy Tables (Arrays)

[hanova]

Ny tables sy mpanoro ova dia mifandray akaiky satria ny anaran'ny table dia tena mpanoro ova izay manondro ny adiresin'ny singa voalohany ao amin'ny table. Azonao atao ny mampiasa mpanoro ova amin'ny fanovana singa ao amin'ny table.

int isa[3] = {10, 20, 30};
int *mpanoro = isa; // mpanoro dia manondro ny singa voalohany ao amin'ny table isa

printf("Ny sanda voalohany dia: %d\\n", *mpanoro); // Mampiseho 10
printf("Ny sanda faharoa dia: %d\\n", *(mpanoro + 1)); // Mampiseho 20

Mpanoro Ova Void (Void Pointers)

[hanova]

Ny mpanoro ova void dia karazana mpanoro ova izay azo ampiasaina amin'ny karazana angona rehetra. Tsy azo idirana mivantana ny sandan'ny mpanoro ova void, fa mila avadika ho karazana hafa aloha.

void *mpanoro;
int isa = 10;
mpanoro = &isa;

printf("Ny sanda ao amin'ny isa dia: %d\\n", *(int *)mpanoro); // Mampiseho 10

Mpanoro Ova amin'ny Vondrona (Struct Pointers)

[hanova]

Mpanoro ova dia azo ampiasaina amin'ny vondrona (structs) mba hanondro ny adiresin'ny vondrona iray, ka mamela ny fidirana amin'ny singa ao anatin'ny vondrona amin'ny alalan'ny mpanoro ova.

struct Vondrona {
    int laharana;
    float sanda;
};

int main() {
    struct Vondrona ohatra = {1, 9.5};
    struct Vondrona *mpanoro = &ohatra;

    printf("Laharana: %d\\n", mpanoro->laharana); // Mampiseho 1
    printf("Sanda: %f\\n", mpanoro->sanda); // Mampiseho 9.500000
    return 0;
}

Mpanoro Ova sy Fitantanana Loharanon-karena

[hanova]

Mpanoro ova dia tena ilaina amin'ny fitantanana loharanon-karena, indrindra rehefa mampiasa memoire voatokana amin'ny alalan'ny malloc na calloc ianao. Azo atao ny mamorona toerana fitehirizana ao amin'ny memoire amin'ny alalan'ny mpanoro ova, ary avy eo dia afaka mamafa azy io rehefa tsy ilaina intsony.

int *mpanoro = (int *)malloc(5 * sizeof(int)); // Mamorona toerana ho an'ny integers 5
if (mpanoro == NULL) {
    printf("Tsy ampy ny memoire!\\n");
    return 1;
}

for (int i = 0; i < 5; i++) {
    mpanoro[i] = i + 1;
}

for (int i = 0; i < 5; i++) {
    printf("%d ", mpanoro[i]); // Mampiseho 1 2 3 4 5
}

free(mpanoro); // Mamafa ny memoire


Fehiny

[hanova]

Ny Tabilao sy mpanoro ova dia fitaovana fototra amin'ny fiteny C izay manamora ny fitantanana angona sy ny fifandraisana amin'ny memoire. Amin'ny alalan'ny fahatakarana ny fampiasana azy ireo, azonao atao ny manatsara ny fahombiazana sy ny fahaiza-manao amin'ny fandaharana amin'ny C.

Ny mpanoro ova dia fitaovana mahery vaika amin'ny fiteny C, indrindra amin'ny fitantanana angona sy loharanon-karena amin'ny fomba mandroso. Amin'ny alalan'ny fahatakarana ny foto-kevitra mandroso momba ny mpanoro ova, dia afaka mampiasa ny herin'ny fiteny C ianao amin'ny famoronana rindrambaiko mahomby sy matanjaka.