Napisz funkcję, która otrzymuje jako argument dodatnią liczbę całkowitą n, a następnie tworzy dynamiczną n-elementową tablicę o elementach typu int i zwraca jako wartość wskaźnik do jej pierwszego elementu.
Do "zapisu wielkości kontenerów" w C i C++, służy typ std::size_t (w C.. size_t). Jest on pozbawiony znaku, spełnia więc założenia polecenia. Jeśli nie miałeś na zajęciach tego typu, mniejszy błąd popełnisz jeśli przekażesz unsigned int a nie int. Typ int przenosi również wartości ujemne.
Dodatkowo tablicy nie powinieneś tworzyć z ilością elementów 0 (zero) (poza tym zero nie jest wartością dodatnią). Stąd wymagana jest kontrola ilości danych przesyłanych. Nie ma informacji w jaki sposób masz dokonać takiej kontroli. Z prostych sposobów, możesz wpisać asercję która nie pozwoli na wywołanie z wartością n == 0. Inną konwencją jest zwrócenie nullptr we wskaźniku lub rzucenie wyjątku.
Dość rozsądne jest także wyzerowanie zawartości tablicy zwracanej co uzyskasz dodając do konstrukcji { i }.
Tak więc:
#include <cstddef>
#include <cassert>
int * createTable(std::size_t size)
{
assert(size > 0);
return new int[size]{};
}
ORAZ FUNKCJĘ, która dostaje jako argument wskaźnik do jednowymiarowej dynamicznej tablicy o elementach typu int i zwalnia pamięć zajmowaną przez przekazaną w argumencie tablicę.
Tu bym nie "przekombinowywał". Być może polecenie nie do końca jest precyzyjne ale IMHO chodzi o przekazanie zwykłego wskaźnika i jego zwolnienie. Jeśli nawet wskaźnik będzie wskazywał na nullptr, delete [] prawidłowo go zwolni nie robiąc nic.
void disposeTable(int * table)
{
delete [] table;
}