Tablica jednowymiarowa

Tablica jednowymiarowa
EX
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:24
0

Cześć, Chciałbym się dowiedzieć jak w jezyku C, stworzyć tablice dla której, osoba odpalająca moj program, bedzie mogla określić liczbę jej elementow?

Chciałbym aby uzytkownik, w moim programie mógl sam okreslic ilu elementowa tablice chce posortować,

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:10 dni
3

man 3 malloc


EX
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:24
0

Mógłbym poprosić o kod, ktory zaprezentuje jak dziala ta funkcja?

SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 9 godzin
0

Szukaj pod tablica dynamiczna. Nie wiem czy to jeszcze istnieje, ale w przypadku kompilatora GCC dało się kiedyś dać rozmiar tablicy jako zmienną wczytywaną z klawiatury.

YooSy
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:472
3

Nie pisz na priv. Zadaj dobre pytanie na forum.
atmal
  • Rejestracja:około 8 lat
  • Ostatnio:około 15 godzin
  • Postów:913
4

C99 obsługuje VLA więc można zrobić:

Kopiuj
int main()
{
    int size;
    scanf("%d", &size);
    int arr[size];
}

Ewentualnie tak jak wyżej napisano, używając malloc:

Kopiuj
int main()
{
    int size;
    scanf("%d", &size);
    int *arr = (int*)malloc(sizeof(int) * size);
    // Pamiętaj o zwolnieniu pamięci:
    free(arr);
}

Do malloca podajesz rozmiar jaki chcesz (w bajtach). sizeof(int) zwraca rozmiar w bajtach jednej zmiennej typu int więc należy pomnożyć to z ilością jaką chcesz mieć. Następnie zwrócony zostanie wskaźnik na przydzielony obszar tablicy albo NULL gdy przydzielenie pamięci się nie powiodło (z braku dostępnego miejsca).


Failure of one test is a tragedy, failure of fifty is a statistic.
edytowany 1x, ostatnio: atmal
hauleth
Sądzę, że w przypadku takiej tablicy to lepiej użyć calloc.
EX
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:24
0

Dziękuję.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.