Czemu nie powiększa liczby jak przesyłam argument jako wskaźnik?

0
int AA(int *aa)
{
    *aa++;
    return *aa;
} 
int cc = 4;
    AA(&CC);
printf("%d,cc);

Czemu wypisuje wartość 4 a nie 5 ?Przecież przekazałem przez wskaźnik

2
(*aa)++;

Co do pytania w komentarzu to *aa++ oznacza weź wartość pod aa, a potem zwiększ wskaźnik aa o 1. A sam wskaźnik był przekazany przez wartość, więc to nie ma żadnego efektu po wyjściu z funkcji.

2

w języku C argumentu nie wyśle jako wskaźnik ?

To co potocznie się nazywa przekazaniem przez wskaźnik, jest de facto przekazaniem wskaźnika przez wartość, więc sam wskaźnik jest kopiowany.
Natomiast jeśli coś zmieniasz pod adresem gdzie ten wskaźnik wskazuje, to ta zmiana ma szansę się zachować po wyjściu z funkcji.

#include <stdio.h>

void zmienWskaznik(int* stary, int* nowy)      // to NIE dziala
{
	stary = nowy;
}

void zmienWartoscPodWskaznikiem(int* stary, int* nowy)
{
	*stary = *nowy;
}

int main() 
{
	int x = 5, y = -11;
	int *xx = &x, *yy = &y;
	printf("%d %d\n", *xx, *yy);
	
	zmienWskaznik(xx, yy);
	printf("%d %d\n", *xx, *yy);    // tutaj xx nadal wskazuje na &x, a nie &y
	
	zmienWartoscPodWskaznikiem(xx, yy);
	printf("%d %d\n", x, y);           // teraz x ma taka sama wartosc jak y
	
	return 0;
}

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