Hej där i novembernatta :)
Nu har jag hittat nybörjarkursen från Mälardalens högskola online. Allt verkar vara bra tills jag kom till avsnittet med funktioner. Men nu skulle jag behöva Ert hjälp med nedanstående
1 #include <stdio.h>
2 #include <stdlib.h>
3 int max(int tal1, int tal2);
4 int main(void);
5 {
6 int maxv, x, y;
7 scanf(”%d %d”, &x, &y);
8 maxv = max(x,y);
9 printf(”%d”, maxv);
10 return 0;
11 }
12 int max (int tal1, int tal2)
{
13 int maxtal;
14 if (tal1 > tal2)
15 maxtal = tal1;
16 else
17 maxtal = tal2;
18 return maxtal;
19 }
funktionsanropet sker på rad 8 men definitionen först på rad 12 - Varför? För om jag fattar rätt så är rad 3 bara funktionsprototypen
varför gå över variabeln maxtal?
och nu till det jag förstår MINST: enligt kursen så på rad 8 tilldelas variabeln maxv returvärdet av anropet till funktionen max(). Vilket de vill ha till att det är samma sak som maxtal???
är detta pga att efter rad 18 så är funktionen max(siffra, tal2) och "tal2" är inte en int utan textsträng? Och då är maxv=max(siffra) och rad 9 skriver ut denna siffra?
1. - Du hade lika gärna kunnat göra hela funktionsdefinitionen innan "main". Anledningen till att det ska stå en deklaration eller en definition innan funktionen används är att kompilatorn inte har en aning om funktioner som inte deklarerats nånstans innan anropet. Den kan inte anropa sådant den inte känner till (sånt som står längre fram i koden).
2. - I den här lösningen är det onödigt, men antagligen endast för att förtydliga. Man hade lika gärna kunnat skriva:
if (tal1 > tal2)
return tal1;
return tal2;
3. - En funktion i C kan endera returnerna ett värde eller inte. Den kan även arbeta med inparametrarna genom deras adresser och på såsätt påverka värdet direkt. En funktion är till för att bryta ned ett problem i mindre beståndsdelar. I just denna kodsnutt är det visserligen överflödigt, men poängen är ju att visa hur det funkar.
4. - Såväl tal1 och tal2 är ju variabler som deklarerats som int'ar inuti funktionsprototypens argumentlista. Funktionen är även deklarerad att returnera en int:
int max(int tal1,int tal2);
Jag föreslår att du läser på om funktioner, endera på siten du skrev om eller i en bok.