C algajatele/osutaja

Osutaja on mälu aadressile viitav muutuja.

Kõigepealt väike näide, siis seletus:

#include <stdio.h>

int main() {
	int i, *j;
	i=12345;
	j=&i;
	printf("muutuja i v22rtus on: %d\nosutaja j v22rtus on: %d\n\n", i, *j);

	char *k="67890", *l;
	l=&k[0]+2;
	printf("osutaja k v22rtus on: %s\nosutaja l v22rtus on: %s\n", k, l);
	return 0;
}
  • int i, *j; deklareerib täisarvtüüpi muutuja i ning täisarvtüüpi mäluväljale osutava muutuja *j.
  • i=12345; paneb muutuja i väärtuseks numbri 12345.
  • j=&i; paneb osutaja j väärtuseks mäluvälja i aadressi. Märk & annab muutuja või osutaja enda aadressi
  • printf koos oma argumentidega kuvab ekraanile muutujate i ja j väärtused. NB! Pane tähele, kuidas on osutaja j funktsiooni printf argumendiks pandud.
  • char *k="67890", *l; deklareerib osutaja *k mille algväärtustab stringiga "67890" ja osutaja *l mis viitab char tüüpi mäluväljale.
  • l=&k[0]+2; annab viitajale l stringi k esimesest tähemärgist 2 märgi võrra edasi asetseva tähemärgi aadressi. Seega saab l endale tähemärgi 8 aadressi ning sellega hakkab ta viitama stringile "890", kuna iga string lõppeb stringilõputähisega \0.
  • printf väljastab jällegi osutajate väärtused, kuid siinkohal tuleks jällegi tähelepanu juhtida viitade kasutamise viisile.
  • return 0; lõpetab programmi töö ja tagastab juhtimisjärje operatsioonisüsteemile ning 0-ga ütleb ta et ühtegi viga programmi töös ei esinenud või et programm lõpetas töö edukalt. Kui main funktsioon tagastab mingi nullist erineva numbri, siis see ütleb operatsioonisüsteemile, et programmi töös tekkis viga.