Qual é a diferença? Ponteiro para uma matriz vs matriz regular

Estou familiarizado com Java e tentando me ensinar C / C ++. Estou roubando um currículo de uma classe que hospeda seus materiaisAqu. Infelizmente, não posso perguntar ao professor, pois não estou na sala de aula. Minha preocupação é com a seção "matrizes declaradas dinamicamente":

Se você quiser alterar o tamanho da sua matriz em tempo de execução, declare matrizes dinâmicas. Isso é feito com ponteiros e com o novo operador. Para o básico sobre ponteiros, leia a seção de ponteiro

Aloque memória usando new e, em seguida, você acessa a matriz da mesma maneira que faria com uma matriz estática. Por exemplo

int * arrayPtr = novo int [10]; for (int i = 0; i <10; i ++) {arrayPtr [i] = i; }

A imagem da memória é idêntica à matriz estática, mas você pode alterar o tamanho, se necessário. Não esqueça que você deve desalocar a memória antes de alocar nova memória (ou você terá um vazamento de memória

delete [] arrayPtr; // o [] é necessário ao excluir ponteiros de array arrayPtr = new int [50]; . . .

Quando terminar completamente a matriz, você deve excluir sua memória:

delete [] arrayPtr;

s matrizes multidimensionais @Dynamic são feitas de maneira semelhante ao Java. Você terá ponteiros para ponteiros. Para um exemplo, consulte um

Meu entendimento é que uma matriz em C é simplesmente uma referência ao endereço de memória do primeiro elemento da matri

Então, qual é a diferença entreint *pointerArray = new int[10]; eint array[10]; caso existam

Fiz alguns testes que parecem indicar que eles fazem exatamente a mesma coisa. O site está errado ou li errado?

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {

    // Initialize the pointer array
    int *pointerArray = new int[10];
    for (int i = 0; i < 10; i++){

        pointerArray[i] = i;
    }

    // Initialize the regular array
    int array[10];
    for (int i = 0; i < 10; i++){

        array[i]= i;
    }

    cout << *(pointerArray + 5) << endl;
    cout << *(array + 5) << endl;

    cout << pointerArray[5] << endl;
    cout << array[5] << endl;

    cout << pointerArray << endl;
    cout << array << endl;

    return 0;
}

Saída

5
5
5
5
0x8f94030
0xbfa6a37c

Tentei "redimensionar dinamicamente" minha matriz de ponteiros, conforme descrito no site, mas minha nova (maior) matriz de ponteiros acaba preenchida com zeros, o que não é muito úti

questionAnswers(9)

yourAnswerToTheQuestion