Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźniki i tablice dynamiczne

Ostatnio zmodyfikowano 2016-05-22 14:24
Autor Wiadomość
DeWuKa
Temat założony przez niniejszego użytkownika
Wskaźniki i tablice dynamiczne
» 2016-05-22 05:26:34
Robię zdanie ze wskaźnikami i trochę strzelając w niedziałającej linii kodu udało mi się go uruchomić, jednak nie rozumiem dlaczego.
C/C++
#include <iostream>

using namespace std;

void utworz( int ** tab, int n )
{
   
    * tab = new int[ n ];
    for( int i = 0; i < n; i++ )
    {
        tab[ 0 ][ i ] = i * i * i; // dlaczego program zadziałał po dodaniu [0] skoro deklarowałem tablicę jednowymiarową tab[n]?
        cout << tab[ 0 ][ i ] << endl;
    }
   
}

int main()
{
    int * tab;
    int n;
    cout << "podaj liczbe: " << endl;
    cin >> n;
    utworz( & tab, n );
    delete[] tab;
    return 0;
}
P-148483
Gibas11
» 2016-05-22 07:11:44
Zrobiłeś trochę bałaganu z gwiazdkami, powinno być
(*tab)[i]
, a [0] jest mniej-więcej równoważne gwiazdce w tym kontekscie. Przekaż wskaźnik przez referencję, będzie dużo prościej.
P-148484
mateczek
» 2016-05-22 08:39:36
albo przekaż wskaźnik przez referencje będzie prościej
C/C++
#include <iostream>

using namespace std;

void utworz( int * & tab, int n )
{
   
    tab = new int[ n ];
    for( int i = 0; i < n; i++ )
    {
        tab[ i ] = i * i * i; // dlaczego program zadziałał po dodaniu [0] skoro deklarowałem tablicę jednowymiarową tab[n]?
        cout << tab[ i ] << endl;
    }
   
}

int main()
{
    int * tab;
    int n;
    cout << "podaj liczbe: " << endl;
    cin >> n;
    utworz( tab, n );
    delete[] tab;
    return 0;
}
P-148486
DeWuKa
Temat założony przez niniejszego użytkownika
» 2016-05-22 11:19:54
Dzięki za odpowiedzi, strasznie się plączę w tym wskaźnikach.
P-148492
carlosmay
» 2016-05-22 14:24:12
strasznie się plączę w tym wskaźnikach.
Właśnie po to wymyślono std::vector (dynamiczna tablica) i inteligentne wskaźniki.
Ograniczają one błędy, które często pojawiają się przy pracy na gołych
new
 i
delete
.
P-148497
« 1 »
  Strona 1 z 1