/* Taulukko aliohjelman argumenttina */ #include #include #define N 3 /* Kun aliohjelmalle välitetään argumenttina taulukko, siitä ei luoda * uutta kopiota. Itse asiassa aliohjelma saa taulukon ensimmäisen * alkion osoitteen. */ double vector_length(double[]); /* Voitaisiin myös kirjoittaa * double vector_length(double*); * double vector_length(double x[N]); * */ /* Jos tarkkoja ollaan, pääohjelmallekin pitäisi määrätä palautusarvo. * Se on yleensä int. Jotkut kääntäjät voivat valittaa palautusarvon * puuttumisesta. */ int main() { double x[N]={0.1, -1.9, 0.5}; /* Kun aliohjelmaa kutsutaan pääohjelmasta, riittää siis * kirjoittaa argumentiksi taulukon nimi. */ printf("x = (%.2lf,%.2lf,%.2lf)\n",x[0],x[1],x[2]); printf("||x|| = %.2lf.\n",vector_length(x)); } /* Aliohjelman määrittelyssä on annettava argumenttina olevan * taulukon nimi, mutta kokoa ei edelleenkään tarvitse antaa. */ double vector_length(double x[]) { double length; int i; /* Lasketaan vektorin x komponenttien neliöiden summan neliöjuuri. */ for(i=0,length=0.0;i