Dlaczego program z odcinku Mirosława Zelenta o wskaźnikach nie działa w visual studio

0

Witam.
Poniższy program wysypuje się po przypisaniu wartości dla zmiennej ile i pokazaniu wyników (najprawdopodobniej błędnych) w visual studio. W code::blocks działa. Moje pytanie brzmi: Dlaczego i co muszę zrobić żeby zadziałał? Dla pewności pobrałem plik z bloga żeby wykluczyć błędny kod.

#include <iostream>

using namespace std;

int ile;

int main()
{
    cout << "Ile liczb w tablicy: ";
    cin>>ile;

    //dynamiczna alokacja tablicy
    int *tablica;
    tablica=new int [ile];

    //pokaz kolejne adresy komorek w tablicy
    for (int i=0; i<ile; i++)
    {
        cout<<(int)tablica<<endl;
        tablica++;
    }

    delete [] tablica;
    tablica=NULL;

    return 0;
}
0

Z całą pewnością musisz dodać #include "pch.h" na początku. poza tym najpierw usunięcie tablicy a potem zmienienie jej wartości na null jest słabym pomysłem. Jak już to najpierw ustaw tablicę na NULL a potem usuń..

#include "pch.h"
#include <iostream>

using namespace std;

int ile;

int main()
{
	cout << "Ile liczb w tablicy: ";
	cin >> ile;

	//dynamiczna alokacja tablicy
	int *tablica;
	tablica = new int[ile];

	//pokaz kolejne adresy komorek w tablicy
	for (int i = 0; i < ile; i++)
	{
		cout << (int)tablica << endl;
		tablica++;
	}

	tablica = NULL;
	delete[] tablica;
	

	return 0;
}
0

Ma ktoś pod ręką linka do alternatywy dla Zelenta? Krytykowaliśmy tu już jego kursy tyle razy, wiec trzeba poratować kolejnego początkującego.

4
   tablica = new int[ile];

   for( ... )
   {
       ...
       tablica++;
   }

   delete[] tablica;

robisz delete na innej wartości wskaźnika niż zwraca ci new.

0
MarekR22 napisał(a):

Ma ktoś pod ręką linka do alternatywy dla Zelenta? Krytykowaliśmy tu już jego kursy tyle razy, wiec trzeba poratować kolejnego początkującego.

C++. Przewodnik dla początkujących Alex Allain
C++. Ćwiczenia praktyczne. Andrzej Stasiewicz

Nie nowe, ale polecane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1