Miksi seuraava koodinpätkä ei toimi?
[code]
#include
void eka (int *luku)
{
*luku = 2;
toka (&luku);
}
void toka (int *luku)
{
*luku = 3;
}
main ()
{
int luku = 1;
printf ("%d\n", luku);
eka (&luku);
printf ("%d\n", luku);
}
[/code]
Eli tarkoitus on se, että main-funktiossa määritelty kokonaislukumuuttuja luku lähetetään muuttujaparametrina funktiolle eka().. Ei tässä mitään, mutta miksi sitä ei voi lähettää eka()-funktiosa toka()-funktiolle. Tarkoitus olisi se, että alkuperäistä luku-muuttujaa muutettaisiin kahdessa eri funktiossa.. Ööh.
[code]
#include
void eka (int *luku)
{
*luku = 2;
toka (&luku);
}
void toka (int *luku)
{
*luku = 3;
}
main ()
{
int luku = 1;
printf ("%d\n", luku);
eka (&luku);
printf ("%d\n", luku);
}
[/code]
Eli tarkoitus on se, että main-funktiossa määritelty kokonaislukumuuttuja luku lähetetään muuttujaparametrina funktiolle eka().. Ei tässä mitään, mutta miksi sitä ei voi lähettää eka()-funktiosa toka()-funktiolle. Tarkoitus olisi se, että alkuperäistä luku-muuttujaa muutettaisiin kahdessa eri funktiossa.. Ööh.
Vastaukset 5
Vanhimmat
Jos kutsut ekasta funktiota toka (&luku); niin parametrina siirtyy pointterin pointteri.
Siis kutsu sitä toka (luku); niin pelittää koska "luku" on jo pointteri jo osoittaa int-muuttujaan.
Ei toimi siltikään, antaa seuraavan virheen:
gcc test3.c
test3.c:10: error: conflicting types for 'toka'
test3.c:6: error: previous implicit declaration of 'toka' was here
Tosiaan funktiot eka ja toka täytyy "declaroida" ennen niiden käyttöä.
Siis:
void eka (int *luku);
void toka (int *luku);
heti #include rivin jälkeen.
Joo. Nyt wörkkii.. Suuri kiitos! Ei olis tuostakaan varmaan ilman apua taas selvinnyt :)
"Nyt wörkkii.. Suuri kiitos!"
Olepa hyvä. Näinhän se homma etenee, toinen toistamme tukien. ;-)