förklaring av kod (pekare)
Hej! jag har denna kod som jag försöker förstå men förstår inte ;/ kan någon vara snäll och förklara vad som händer steg för steg?
#include <stdio.h>
int main()
{
int num1 = 5, num2, *pA, *pB;
pA = &num1;
*pA = num1 + *pA;
pB = pA;
pA = &num2;
num2 = *pB *num1;
printf("%d, %d", *pA, *pB);
return 0;
}
Didar skrev:#include <stdio.h>
int main()
{
int num1 = 5, num2, *pA, *pB;
4 variabler deklareras:
- num1 är ett heltal som initieras till 5, dvs num1 får värdet 5.
- num2 är ett heltal som inte initieras
- pA är en pekare till ett heltal.
- pB är en pekare till ett heltal.
pA = &num1;
Pekaren pA sätts till adressen av variabeln num1, dvs pA sätts att peka på den plats i minnet där innehållet i variabeln num1 lagras.
*pA = num1 + *pA;
Det som pA pekar på sätts till värdet av num1 plus innehållet i den plats i minnet som pA pekar på. I det här fallet ändras innehållet från 5 till 5+5, dvs 10.
pB = pA;
Pekaren pB sätts till att peka på samma plats i minnet som pA pekar på, dvs pB sätts att peka på den plats i minnet där innehållet i variabeln num1 lagras.
pA = &num2;
Pekaren pA sätts till adressen av variabeln num2, dvs pA sätts att peka på den plats i minnet där innehållet i variabeln num2 lagras.
num2 = *pB *num1;
Innehållet i variabeln num2 sätts till produkten av innehållet i den plats i minnet som pB pekar på och innehållet i num1. I det här fallet sätts innehållet i num2 till 10•10, dvs 100.
printf("%d, %d", *pA, *pB);
Utskrift sker. Det som skrivs ut är
- innehållet i den plats i minnet som pA pekar på, tolkat som ett heltal.
- ett kommatecken
- ett blanksteg
- innehållet i den plats i minnet som pA pekar på, tolkat som ett heltal.
return 0;
Programmet returnerar heltalet 0.
}
Yngve skrev:Didar skrev:#include <stdio.h>
int main()
{
int num1 = 5, num2, *pA, *pB;
4 variabler deklareras:
- num1 är ett heltal som initieras till 5, dvs num1 får värdet 5.
- num2 är ett heltal som inte initieras
- pA är en pekare till ett heltal.
- pB är en pekare till ett heltal.
pA = &num1;
Pekaren pA sätts till adressen av variabeln num1, dvs pA sätts att peka på den plats i minnet där innehållet i variabeln num1 lagras.
*pA = num1 + *pA;
Det som pA pekar på sätts till värdet av num1 plus innehållet i den plats i minnet som pA pekar på. I det här fallet ändras innehållet från 5 till 5+5, dvs 10.
pB = pA;
Pekaren pB sätts till att peka på samma plats i minnet som pA pekar på, dvs pB sätts att peka på den plats i minnet där innehållet i variabeln num1 lagras.
pA = &num2;
Pekaren pA sätts till adressen av variabeln num2, dvs pA sätts att peka på den plats i minnet där innehållet i variabeln num2 lagras.
num2 = *pB *num1;
Innehållet i variabeln num2 sätts till produkten av innehållet i den plats i minnet som pB pekar på och innehållet i num1. I det här fallet sätts innehållet i num2 till 10•10, dvs 100.
printf("%d, %d", *pA, *pB);
Utskrift sker. Det som skrivs ut är
- innehållet i den plats i minnet som pA pekar på, tolkat som ett heltal.
- ett kommatecken
- ett blanksteg
- nnehållet i den plats i minnet som pA pekar på, tolkat som ett heltal.
return 0;
Programmet returnerar heltalet 0.
}
tack för en bra förklaring Yngve!