czy przypisując do zmiennej wskaźnikowej miejsce rozpoczęcia nowej tablicy, nie powinniśmy również podać nazwy tej tablicy?
Um... nie ma czegoś takiego ogólnie w C++ie. Obiekty nie mają nazw. Masz zmienne zawierające obiekty lub wskazujące na obiekty w pamięci - ale to zmienne mają nazwy, nie obiekty.
Czy to oznacza, że będziemy mogli się do niej odwoływać tylko po zmiennej wskaźnikowej tablica?
Nie, jak najbardziej możesz mieć inne zmienne ze wskaźnikami lub referencjami na zaalokowaną wartość lub tablicę.
int *x = new int;
int *y = x;
int &z = *x;
// etc
Chciałbym jeszcze zapytać, czym różni się taka dynamiczna alokacja pamięci od takiej zwykłej, tak jak w programie na poniższym zdjęciu:
Jest na odwrót - to co pokazałeś, `int tab[ile];`, nie tylko nie jest "zwykłe", ale w ogóle nie jest w standardzie C++a. Tak się składa że działa w Twoim kompilatorze, ale to dlatego że ma takie rozszerzenie. W innym kompilatorze, jak MSVC (lub w Twoim kompilatorze w trybie bez rozszerzeń), `int tab[ile];` już nie zadziała jeśli `ile` nie jest stałą.
W każdym różnica jest taka, że `new int[ile]` alokuje na stercie i wymaga późniejszej dealokacji, a `int tab[ile]` umieszcza je na stosie, więc z natury ich czas życia jest związany z tą funkcją (jest też ograniczony małym rozmiarem stosu).