Usuwanie tablicy w C ++

Usuwanie tablicy w C ++
Ten artykuł dotyczy sposobu usunięcia tablicy w C++. Obejmuje również usuwanie tablicy wskaźników. Wcześniej należy stwierdzić, że istnieją dwa główne sposoby tworzenia tablicy w C ++, co zależy od rodzaju używanej pamięci. Gdy program jest uruchomiony, otrzymuje dwie części pamięci: normalna pamięć, której używa; i bezpłatny sklep, którego może użyć, ale nie. Tablicę można tworzyć w normalnej pamięci lub w bezpłatnym sklepie. Składniki do utworzenia tablicy w obu części pamięci są różne; W przeciwnym razie jest to ta sama tablica. Sposoby, w jakie można je usunąć, są również różne.

Zwykła tablica

Tablicę można utworzyć w normalnej pamięci w następujący sposób:

char arr [] = 'p', „q ',' r ',' s ',' t ';

Aby usunąć tę tablicę, po prostu pozwól jej wyjść z zakresu.

Darmowa tablica sklepu

Tablicę można utworzyć dynamicznie, podczas wykonywania programu, w bezpłatnym sklepie. Taka tablica można utworzyć w następujący sposób:

char *ptr = nowy char [5] „p”, „q”, „r”, „s”, „t”;

Ta sama tablica można utworzyć w głównej funkcji C ++ w następujący sposób:

char *ptr = nowy char [5];
ptr [0] = „p”; ptr [1] = 'q'; ptr [2] = 'r'; ptr [3] = 's'; ptr [4] = 't';

Uwaga dotycząca użycia operatora, nowego, tutaj. PTR jest wskaźnikiem. ARR powyżej jest również wskaźnikiem, ale podeszło do niego z innego punktu widzenia. Aby usunąć tę tablicę, użyj operatora, usuń [], jak pokazano poniżej. Tablicy w bezpłatnym sklepie nie można usunąć, pozwalając, aby wyjść z zakresu. Tak więc należy go usunąć z operatorem Delete [].

Ten artykuł ilustruje różne sposoby usunięcia tablicy utworzonej na dwa sposoby.

Treść artykułu

- Usuwanie zwykłej tablicy

- Usuwanie dynamicznie utworzonych tablicy wskaźników bezpłatnego sklepu

- Wniosek

Usuwanie zwykłej tablicy

Aby usunąć zwykłą tablicę, po prostu pozwól jej wyjść z zakresu. Chociaż funkcja main () jest funkcją kapitałową programu C ++, nadal jest funkcją. W poniższym programie tablica jest tworzona w zagnieżdżonym zakresie lokalnym (bloku) w głównej funkcji C ++:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

if (1 == 1)
char arr [] = 'p', „q ',' r ',' s ',' t ';
Cout<
// cout<powrót 0;

Wyjście to q. Zakres zagnieżdżony jest blokiem konstruktu IF. Tablica została utworzona w tym bloku i używana w tym samym bloku poprzez drukowanie drugiej wartości tablicy. Na końcu bloku zmienna tablica umiera. Jeśli wskaźnik komentarza tuż pod blokiem zostanie usunięty, program nie zostanie skompilowany, zostanie wydany komunikat o błędzie. Będzie to dlatego, że tablica zmarła na końcu bloku.

Poniższy program ilustruje podobną rzecz, ale w funkcji, zwanej fn ().

#włączać
za pomocą przestrzeni nazw Std;
void fn ()
char arr [] = 'p', „q ',' r ',' s ',' t ';
Cout<
// arr [1] = 'u';
int main ()

fn ();
powrót 0;

Wyjście jest nadal, q. Jeśli wskaźnik komentarza tuż poniżej bloku funkcji zostanie usunięty, program nie zostanie skompilowany i zostanie wydany komunikat o błędzie. Będzie tak, ponieważ tablica zmarła na końcu bloku funkcji (zakres). Należy również zauważyć, że przypisanie po deklaracji nie jest dozwolone w globalnym zakresie.

Usuwanie dynamicznie utworzonych tablicy wskaźników bezpłatnego sklepu

Ponieważ przypisanie po deklaracji nie jest dozwolone w globalnym zakresie, tablica w bezpłatnym sklepie będzie wykonywana w zakazu zagnieżdżonego bloku funkcyjnego C ++, który jest zilustrowany poniżej. Operator Delete [] jest używany w zagnieżdżonym zakresie, aby usunąć tablicę, w następujący sposób:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

if (1 == 1)
char *ptr = nowy char [5] „p”, „q”, „r”, „s”, „t”;
Cout<Usuń [] ptr;
Cout<
powrót 0;

Wyjście to jeden „Q”, z pierwszej instrukcji Cout. Zauważ, że nazwa tablicy, PTR, jako argument (parametr) operatora usuwania. Tablica, ptr dla bezpłatnego sklepu, jest zadeklarowana, używana i usuwana z operatorem „Usuń [] ()” w tym samym zagnieżdżonym zakresie. Jeśli nie pozwala się wyjść z zakresu, bez „usuwania [] ptr”, tak naprawdę nie zostanie usunięty, ponieważ jest w bezpłatnym sklepie. Taka tablica musi zostać usunięta w swoim zakresie, po użyciu z operatorem Delete []. Usuwanie za pomocą operatora Delete [] musi być wykonane dla tablicy dynamicznej, aby uwolnić pamięć (unikaj wycieku pamięci).

Poniższy program ilustruje podobną rzecz, ale w zakresie głównej funkcji C ++:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

char *ptr = nowy char [5] „p”, „q”, „r”, „s”, „t”;
Cout<Usuń [] ptr;
powrót 0;

Wyjście jest nadal, q tak, jak powinno, z indeksem. Cały kod zainteresowania znajduje się bezpośrednio w głównej funkcji C ++. Chociaż funkcja main () jest funkcją kapitałową programu C ++, nadal jest funkcją zakresu funkcji lub bloku funkcji.

Włączenie nagłówka biblioteki

Jak wspomniano powyżej, nie uwzględniono biblioteki do korzystania z nowych lub usuwania operatorów. Jednak nowi i usuwani operatorzy są w nowej bibliotece, która jest domyślnie uwzględniona. Nowi i usuwani operatorzy mają globalny zakres. Biblioteka może być nadal uwzględniona, jak w poniższym programie dla zwykłej tablicy:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

if (1 == 1)
char arr [] = 'p', „q ',' r ',' s ',' t ';
Cout<
// cout<powrót 0;

Program działa bez żadnego problemu. Biblioteka może być nadal uwzględniona, podobnie jak w poniższym programie, dla dynamicznej tablicy wskaźników w bezpłatnym sklepie:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

if (1 == 1)
char *ptr = nowy char [5] „p”, „q”, „r”, „s”, „t”;
Cout<Usuń [] ptr;

powrót 0;

Program działa bez żadnego problemu. Uwaga: Włączenie nowego nagłówka (biblioteka) nie jest obowiązkowe.

Wniosek

Aby usunąć zwykłą tablicę, po prostu pozwól jej wyjść z zakresu. Aby usunąć dynamiczną tablicę wskaźników bezpłatnego sklepu, użyj operatora, usuń [] ArrayName, w tym samym zakresie. Operator usuwania tablicy może mieć drugi i/lub trzeci argument. Jednak jest to dyskusja od jakiegoś czasu.