Diferença entre ponteiro e matriz

Anonim

Ponteiro vs Array

Um ponteiro é um tipo de dados que contém uma referência a uma localização de memória (ie uma variável de ponteiro armazena um endereço de um local de memória em que alguns dados são armazenados). As 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 facilmente arrays e acessar elementos nas matrizes. <

O que é um ponteiro?

Um ponteiro é um tipo de dados que armazena um endereço de um local de memória no qual alguns dados são armazenados. Em outras palavras, um ponteiro contém um referência a um local de memória. O acesso aos dados armazenados na localização de memória que é referenciada pelo ponteiro é chamado de desreferência. Quando perfo Realizar operações repetitivas, como atravessar árvores / cadeias de caracteres, pesquisas de tabela, etc., usando ponteiros melhoraria o desempenho. Isso ocorre porque o desreferenciamento e os ponteiros de cópia são mais baratos do que realmente copiar e acessar os dados apontados pelos 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 é uma matriz?

Mostrado na figura 1, é um pedaço de código normalmente usado para declarar e atribuir valores a uma matriz. A Figura 2 mostra como uma matriz seria semelhante à memória.

valores int [5];

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 0 a 4. Uma propriedade importante de uma matriz é essa, Toda a matriz é alocada como um único bloco de memória e cada elemento obtém seu próprio espaço na matriz. Uma vez definida uma matriz, seu tamanho é corrigido. Então, se você não tem certeza sobre o tamanho da matriz em tempo de compilação, você precisaria definir uma disposição suficientemente grande para estar no lado seguro. Mas, na maioria das vezes, na verdade, vamos usar menos número de elementos do que alocamos. Portanto, uma quantidade considerável de memória é realmente desperdiçada. Por outro lado, se a "grande disposição suficiente" não for realmente grande o suficiente, o programa falharia.

Qual a diferença entre Ponteiros e Arrays?

Um ponteiro é um tipo de dados que armazena um endereço de um local de memória em que 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 a aritmética do ponteiro (i. E. O ith elemento da matriz x seria equivalente a * (x + i)).Portanto, em C, conjunto de ponteiros que apontam para um conjunto de locais de memória que são consecutivos, pode ser pensado como uma matriz. Além disso, há uma diferença na forma como o tamanho do operador opera em ponteiros e arrays. Quando aplicado a uma matriz, o operador sizeof retornará todo o tamanho da matriz, enquanto que, quando aplicado a um ponteiro, retornaria apenas o tamanho do ponteiro.