wskaźniki i zmienna lokalna

0

#include <stdio.h>

void zamien_wartosci(int x, int y){
x = y;
y = x;
}

int main() {
int a = 8, b = 16;

printf("Przed zamiana\n");
printf("a = %2d, b = %2d\n", a, b);

zamien_wartosci(a, b); // nie dziala tak jak bysmy chcieli!

printf("Po zamianie\n");
printf("a = %2d, b = %2d\n", a, b);

return 0;

}
Nie działa i wskazówka jest taka żeby skorzystać z przekazania argumentu przez wskazanie i wprowadzić dodatkową zmienną lokalną.

0

Albo ja jestem ślepy albo tu nie ma żadnego wskaźnika.

0

To nie wskazówka tylko dokładne wytyczne co trzeba zmienić aby zaczęło działać.

0
#include <stdio.h>

void zamien_wartosci(int x, int y){
	x = y;
    y = x;
}

int main() {
	int a = 8, b = 16;

	printf("Przed zamiana\n");
	printf("a = %2d, b = %2d\n", a, b);

	zamien_wartosci(a, b); // nie dziala tak jak bysmy chcieli!

	printf("Po zamianie\n");
	printf("a = %2d, b = %2d\n", a, b);

	return 0;
} 

Sformatowałem kod. Rozumiem co to są wskaźniki i zmienne lokalne ale nie wiem jak to zastosować w zadaniu, ktoś pomoże ?

0

Funkcja otrzymuje kopie - dlatego nie działa, potrzebne przekazywanie poprzez wskaźniki.
Po x=y; już bezpowrotnie zgubiłeś wartość x, potrzebna dodatkowa zmienna.

0
#include <stdio.h>

void zamien_wartosci(int *x, int *y, int *z){

    *z = *x;
    *x = *y;
    *y = *z;
}

int main() {
	int a = 8, b = 16,c;

	int *wsk_a = &a;
	int *wsk_b = &b;
	int *wsk_c = &c;

	printf("Przed zamiana\n");
	printf("a = %2d, b = %2d\n", a, b);

	zamien_wartosci(wsk_a, wsk_b, wsk_c); // nie dziala tak jak bysmy chcieli!

	printf("Po zamianie\n");
	printf("a = %2d, b = %2d\n", a, b);

	return 0;
}
 

NIby działa ale czy o to chodziło to nie wiem ?

0

"... i wprowadzić dodatkową zmienną lokalną." odróżniasz zmienną lokalną od parametru funkcji ?

1
#include <stdio.h>
 
void zamien_wartosci(int* x, int* y)
{
    int tmp = *x;
    *x = *y;
    *y = tmp;
}

int main() 
{
    int a = 8, b = 16;
 
    printf("Przed zamiana\n");
    printf("a = %2d, b = %2d\n", a, b);
 
    zamien_wartosci(&a, &b);
 
    printf("Po zamianie\n");
    printf("a = %2d, b = %2d\n", a, b);
 
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1