Wpis z mikrobloga

#programowanie #clang #jezykc program w C. wprowadzamy zmienna n wpisujemy wartość rozmiaru tablicy w getSize. tworzymy tablice o takim rozmiarze. nastepnie zapelniamy tą tablice liczbami od poczatku do konca w getArray a na koncu wypisujemy każdy element tablicy w printArray. teraz na koncu chcialbym stworzyc funkcję increaseSize, ktora powiększy rozmiar tablicę 2x krotnie. wiem, ze istnieje funkcja malloc, realloc. jak można zastosować tutaj tę funkcję dla tablicy A ? dziękuje
J.....L - #programowanie #clang #jezykc program w C. wprowadzamy zmienna n wpisujemy ...

źródło: comment_GXPs38FcONFdcE7h1DxYexV18OSOztn9.jpg

Pobierz
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

getArray nic nie zwraca...

a zwiększenie tablicy funkcją realloc

int *icreaseSize(int *A, const int n)
{
  • Odpowiedz
@QBA__: mam pytanie odnosnie funckcji:

return realloc(A, n* sizeof(int));

co będzie po wywolaniu jej?
jesli wczesniej wpisalismy n jako 25, czyli array'u A wynosił 25, to po wykonaniu tej funkcji rozmiar Array;u A będzie wynosił 50 ?
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@JungleJamPL: o ile nie zwróci NULLa będziesz miał wskaźnik do pamięci o rozmiarze 50*wielkość typu int, jeśli podasz jako drugi argument n=50
  • Odpowiedz
@QBA__:
akurat w tym wypadku zmienna int n , jest zarezerwowana, jako zmienna ktora na wejsciu deklaruje się wielkość tablicy.
czyli korzystając z tego rozumowania, musiałbym stworzyć jakaś zmienna np. int m = 2 , jesli chialbym zeby rozmiar tablicy zwiększyć dwukrotnie
nie mozna po prostu zrobić czegoś takiego ?
return realloc(A, 2* sizeof(int));
  • Odpowiedz
@QBA__: rozumiem, a teraz nastepny krok.
czy w takim wypadku mozna dodać :

return realloc(A, n + sizeof(int));

chodzi o to żeby każdorazowo podczas wykonania tej funkcji, powiekszać rozmiar tablicy o jakąś zmienna integer zdefiniowana wczesniej ?
  • Odpowiedz