Wpis z mikrobloga

Mógłby mi ktoś łopatologicznie wytłumaczyć na jakiej zasadzie działa kopiowanie tablic w c++ ?

void strcpy(char cel[], char zrodlo[])

{

int i = 0;

do[

cel[i] = zrodlo[i];

}

while(cel[i++] != 0);

}

Czy ta funkcja nadpisuje dane wartości funkcji czy dodaje nowe? Bo teraz zgłupiałem. o_0

#programowanie #cpp
  • 28
@GrabkaMan: i to licznik. obiekt w tablicy cel jest taki sam jak w tablicy zrodlo - wskazuje na to licznik. w petli zostaje wykonane przypisanie do tablicy cel obiektu z tablicy zrodlo.

nic nie nadpisuje, po prostu w tablicy cel sa zapisywane odwolania do obiektow, ktore maja ten sam adres co obiekty w tablicy zrodlo.
@GrabkaMan: dobra kurdelebele. na poczatku masz int i = 0, jest to licznik. wyobraz sobie ze jestes ojcem z 20 corkami i masz 100 kawalkow tortu.

myslisz sobie:

bede dawal po kolei corkom ciasto bo nie ma sensu aby dac najpierw jednej 5 kawalkow, dam kazdej po kolei jeden kawalek i tak w kolko az mi sie skonczy xD


no i robisz sobie taki liczniczek. jest 0, bo jeszcze nie przeszedles
@pendeho: void foo(T* x) i void foo(T x[] ) to to samo, inne znaczenie ma dopiero, jak jest void foo(T x[jakas-liczba-lub-const])

@GrabkaMan: parametry tej funkcji to wskaźniki; wskaznik do tablicy - adres w pamieci pierwszego elementu; wiec wywolanie strcpy(foo, bar) nie przekazuje wartosci c-stringow, tylko adresy gdzie sie zaczynaja;

wskaznik[jakas_liczba] to n-ty element tablicy;

podsumowujac: najciekawsza linijka (cel[i] = zrodlo[i]), czyli 'zapisz pod adresem 'cel+i elementow' wartosc jaka jest pod
@GrabkaMan: tablica to praktycznie wskaźnik który pokazuje na zerowy element. to tak jakbyś pokazywał palcem na zerowy element i przesuwał się. zapis t[2] oznacza że przesuwasz wskaźnik o 2. o dwa czego? o dwa rozmiary elementów tablicy (czyli *(t+2) ). Kopiowanie polega na wydobyciu z tablicy źródłowej wartości i przypisaniu do docelowej.

Jeśli wysyłasz tablice, to tak jakbyś wysyłał wskaźnik, zatem operujesz na oryginałkach. Tablica nie jest przekazywana przez wartość, ponieważ