Diferença entre ponteiro e array

Diferença entre ponteiro e array
Diferença entre ponteiro e array

Vídeo: Diferença entre ponteiro e array

Vídeo: Diferença entre ponteiro e array
Vídeo: C# beginners :- Assembly , EXE and DLL 2024, Julho
Anonim

Ponteiro 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). Arrays 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 nos arrays.

O que é um ponteiro?

Um ponteiro é um tipo de dado que armazena um endereço de um local de memória no qual alguns dados são armazenados. Em outras palavras, um ponteiro mantém uma referência a um local de memória. Acessar os dados armazenados no local de memória que é referenciado pelo ponteiro é chamado de desreferenciamento. Ao realizar operações repetitivas, como percorrer árvores/strings, pesquisas de tabela, etc., o uso de ponteiros melhoraria o desempenho. Isso ocorre porque desreferenciar e copiar ponteiros é mais barato 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 é um Array?

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

int valores[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 um array

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

Figura 2: Array armazenado na memória

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

Qual é a diferença entre Ponteiros e Arrays?

Um ponteiro é um tipo de dado 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 de array é feita usando aritmética de ponteiro (ou seja, o elemento i do array x seria equivalente a (x+i)). Portanto, em C, o conjunto de ponteiros que apontam para um conjunto de locais de memória 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 um array, o operador sizeof retornará o tamanho inteiro do array, enquanto quando aplicado a um ponteiro, retornará apenas o tamanho do ponteiro.

Recomendado: