• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zwracana wartość

0 głosów
244 wizyt
pytanie zadane 6 stycznia 2017 w C i C++ przez Hafer Nowicjusz (170 p.)
#include <stdio.h>
#include <stdlib.h>

int f(int *x){    
return *x += 3;
}

void main()
{       
 int z = 2;
 int y = f(&z);
 
 printf("Y i Z = %d i %d", y, z);  
 
 getch();  
     
}
     


Byłbym wdzięczny za wytłumaczenie mi krok po kroku jaka jest wartość zwracana y i z.

3 odpowiedzi

0 głosów
odpowiedź 6 stycznia 2017 przez czujek22 Dyskutant (7,670 p.)
wybrane 8 stycznia 2017 przez Hafer
 
Najlepsza

W funkcji f() używasz przy pobraniu parametru wskaźnika na int (int *x). Wywołując funkcje f() podajesz argument &z co znaczy, że odwołuje się się do zmiennej z czyli ten wskaznik *x modyfikuje także zmienną z i teraz będzie tam nie 2 a 2+3=5, taki sam wynik zwroci do y. Gdybyś zrobił parametry bez wskaźników

int f(int x)
int y = f(z);

wtedy ta funkcja utworzyła by sobie własną zmienną x (kopię z) i w tej zmiennej z nic nie zmieniała a po prostu skopiowała wartość i zwróciła po obliczeniach wynik do y.

+2 głosów
odpowiedź 6 stycznia 2017 przez playerony Pasjonat (15,200 p.)
No wartości Y oraz Z wynoszą 5. Dlaczego? No tu bym Ci radził poczytać co nieco na temat wskaźników, ale pokrótce to inkrementujesz przesłaną wartość o 3 i ją zwracasz wskaźnikiem. Więc 2 + 3 = 5. Kolejnio przypisujesz tę wartość do Y i stąd wynik. Już nawet nie pytam skąd ten "void main()".
0 głosów
odpowiedź 6 stycznia 2017 przez operator Stary wyjadacz (10,920 p.)

#include <stdio.h>
#include <stdlib.h>

int f( int *x ){    
	return *x += 3;
}

int main(){       
	
	int a = 2;
	int y = f(&a);// przypisujesz wynik funkcji 'f' z argumentem będącym wskaźnikiem na zmienną 'a'
	
	// w pierwszym kroku zostanie wykonana funkcja 'f'
	// zwraca ona liczbę X powiększoną o 3
	// liczba X jest modyfikowana na rzecz elementu na który wskazuje wskaźnik
	// wskazuje na zmienną 'a'
	// wtedy 'a' zostanie powiększona w trakcie działania funkcji 'f'
	
	printf("y i a = %d i %d", y, a);
	
	return 0;
	
}

Podobne pytania

0 głosów
1 odpowiedź 392 wizyt
pytanie zadane 7 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 9 czerwca 2020 w JavaScript przez Kacperhehe Bywalec (2,930 p.)
0 głosów
1 odpowiedź 387 wizyt
pytanie zadane 28 lutego 2020 w C i C++ przez Programmingc100 Bywalec (2,620 p.)

93,599 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,082 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...