Diferença Entre Ponteiro E Matriz

Diferença Entre Ponteiro E Matriz
Diferença Entre Ponteiro E Matriz

Vídeo: Diferença Entre Ponteiro E Matriz

Vídeo: Diferença Entre Ponteiro E Matriz
Vídeo: PONTEIROS E MATRIZES | Linguagem C #022 2024, Pode
Anonim

Pointer vs Array

Um ponteiro é um tipo de dado que contém uma referência a um local de memória (ou seja, uma variável de ponteiro armazena um endereço de um local de memória no qual alguns dados são armazenados). Matrizes são a estrutura de dados mais comumente usada para armazenar uma coleção de elementos. A maioria das linguagens de programação fornece métodos para declarar arrays facilmente e acessar elementos nos arrays.

O que é um Pointer?

Um ponteiro é um tipo de dados que armazena um endereço de um local da memória no qual alguns dados são armazenados. Em outras palavras, um ponteiro contém uma referência a um local da memória. O acesso aos dados armazenados no local da memória referenciado pelo ponteiro é denominado desreferenciamento. Ao realizar operações repetitivas, como percorrer árvores / strings, pesquisas em tabelas, etc., o uso de ponteiros pode melhorar o desempenho. Isso ocorre porque desreferenciar e copiar ponteiros é mais barato do que realmente copiar e acessar os dados apontados por ponteiros. Um ponteiro nulo é um ponteiro que não aponta para nada. Em Java, acessar um ponteiro nulo geraria uma exceção chamada NullPointerException.

O que é um Array?

Mostrado na figura 1, está um trecho de código normalmente usado para declarar e atribuir valores a uma matriz. A Figura 2 mostra como um array ficaria na memória.

valores [0] = 100;

valores [1] = 101;

valores [2] = 102;

valores [3] = 103;

valores [4] = 104;

Figura 1: Código para declarar e atribuir valores a uma matriz

100 101 102 103 104 Índice: 0 1 2 3 4

Figura 2: Array armazenado na memória

O código acima define uma matriz que pode armazenar 5 inteiros e eles são acessados usando os índices de 0 a 4. Uma propriedade importante de uma matriz é que toda a matriz é alocada como um único bloco de memória e cada elemento obtém seu próprio espaço na matriz. Depois que um array é definido, seu tamanho é fixo. Portanto, se você não tiver certeza sobre o tamanho do array em tempo de compilação, terá que definir um array grande o suficiente para estar no lado seguro. Mas, na maioria das vezes, usaremos menos número de elementos do que alocamos. Portanto, uma quantidade considerável de memória é realmente desperdiçada. Por outro lado, se a “matriz grande o suficiente” não for realmente grande o suficiente, o programa travaria.

Qual é a diferença entre Pointers e Arrays?

Um ponteiro é um tipo de dados que armazena um endereço de um local da memória no qual alguns dados são armazenados, enquanto Arrays são a estrutura de dados mais comumente usada para armazenar uma coleção de elementos. Na linguagem de programação C, a indexação da matriz é feita usando aritmética de ponteiros (ou seja, o iº elemento da matriz x seria equivalente a * (x + i)). Portanto, em C, um conjunto de ponteiros que apontam para um conjunto de locais de memória que são consecutivos pode ser considerado um array. Além disso, há uma diferença em como o operador sizeof opera em ponteiros e matrizes. Quando aplicado a uma matriz, o operador sizeof retornará todo o tamanho da matriz, enquanto que, quando aplicado a um ponteiro, ele retornará apenas o tamanho do ponteiro.

Recomendado: