Diferença entre matriz e ponteiro

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 15 Poderia 2024
Anonim
Diferença entre matriz e ponteiro - Tecnologia
Diferença entre matriz e ponteiro - Tecnologia

Contente


Há uma estreita relação entre matriz e ponteiro. O ponteiro pode ser usado para acessar os elementos da matriz, acessando toda a matriz usando a aritmética do ponteiro, agilizando o acesso. Existe uma diferença básica entre um ponteiro e uma matriz, ou seja, uma matriz é uma coleção de variáveis ​​de tipo de dados semelhante, enquanto o ponteiro é uma variável que armazena o endereço de outra variável. Existem algumas outras diferenças entre uma matriz e um ponteiro que são discutidas abaixo no gráfico de comparação.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoMatrizPonteiro
Declaração// Em C ++
digite var_name;
// Em Java.
digite var-name;
var_name = novo tipo;
// Em C ++
tipo * var_name;
TrabalhandoArmazena o valor da variável do tipo de dados homogêneo.Armazene o endereço da outra variável do mesmo tipo de dados que o tipo de dados das variáveis ​​do ponteiro.
GeraçãoUma matriz de ponteiros pode ser gerada.Um ponteiro para uma matriz pode ser gerado.
Suporte JavaApoie o conceito de matriz.Não suporta ponteiros.
ArmazenamentoUma matriz normal armazena valores da variável e a matriz do ponteiro armazena o endereço das variáveis.Os ponteiros são projetados especialmente para armazenar o endereço das variáveis.
CapacidadeUma matriz pode armazenar o número de elementos mencionados no tamanho da variável da matriz. Uma variável de ponteiro pode armazenar o endereço de apenas uma variável por vez.


Definição de Matriz

Uma matriz é a coleção dos elementos do mesmo tipo de dados e todos esses elementos são referidos por um nome comum, que é o nome de uma variável da matriz. Um elemento específico da matriz pode ser acessado acessando o índice específico dessa matriz onde esse elemento está armazenado. As matrizes podem ser uma matriz unidimensional, uma matriz bidimensional ou uma matriz multidimensional. Uma matriz de ponteiros também pode ser gerada, isto é, uma matriz contendo todas as variáveis ​​como variável de ponteiro. Em 'C ++', as matrizes são alocadas estaticamente, enquanto que em 'Java' as matrizes são alocadas dinamicamente.

// No C ++, digite var_name; // Em Java. digite var-name; var_name = novo tipo;

Aqui, o 'tipo' indica o tipo de dados de uma variável de matriz, 'var_name' indica o nome dado à variável de matriz, 'size' indica a capacidade da variável de matriz, ou seja, quantos elementos de 'tipo' podem ser armazenados nessa variável de matriz . Existem dois métodos para acessar uma matriz, primeiro 'aritmética de ponteiro' e segunda 'indexação de matriz', dos quais 'aritmética de ponteiro' é mais rápido.


// acessando usando a aritmética do ponteiro Void display_array (int * S) {while (* s) {cout (<< "o valor é" << * s); * s ++; }}

O uso de "aritmética de ponteiro" funcionaria mais rápido em comparação com a "indexação de matriz", ou seja, acessar a variável de matriz usando seu índice. Se você precisar passar uma matriz de ponteiros para uma função, isso pode ser feito usando o mesmo método usado para transmitir uma matriz normal, ou seja, chame diretamente a função com o nome da matriz, sem nenhum índice.

Vamos entender isso com o exemplo

// Declarando a matriz de ponteiros. int * p;

Aqui, mostra que 'p' é uma matriz do tipo inteiro; ele manterá o endereço de 10 variáveis ​​do tipo inteiro. Vamos passar a matriz de ponteiros acima para uma função display ().

display (p); // Chame a exibição da função. exibição nula (int * d) {// Função que recebe a matriz do ponteiro. para (int i = 0; i <10; i ++) {cout << ("índice" <

Esta função exibirá os valores, presentes nas variáveis, cujos endereços são armazenados nesse array de ponteiros sequencialmente.

Definição de Ponteiro

O ponteiro é uma variável que contém o endereço de memória de outra variável. O tipo de dados de ambos, a variável de ponteiro e a variável cujo endereço está sendo atribuído a uma variável de ponteiro, devem ser iguais. A variável ponteiro é declarada a seguir.

// Declaração em C ++ tipo * nome;

Aqui, 'tipo' é um tipo de dados, 'nome' é o nome da variável do ponteiro. O "tipo" define que tipo de endereço da variável pode ser armazenado na variável de ponteiro. Por exemplo, o ponteiro inteiro armazenará o endereço da variável inteira. Existem dois operadores de ponteiro '*' e '&'. O operador '*' retorna o valor localizado no endereço, que é armazenado na variável seguida pelo sinal '*'. O operador '&' retorna o endereço da variável seguido pelo sinal '&'.

// por exemplo int b = 10 int a = & b; // Aqui o endereço de b é armazenado na variável a. // permite que o endereço de b seja 2000, então agora a = 2000. int c = * a; // Aqui, a variável do ponteiro inteiro * a retornará o valor que está localizado no endereço armazenado em .ie. c = 10.

Existem apenas dois operadores aritméticos que você pode usar em ponteiros, isto é, adição e subtração. Se você aplicar incremento em uma variável de ponteiro inteiro, ele será incrementado pelo tamanho do tipo de dados, isto é, por 2 bytes, como é um ponteiro inteiro, no incremento terá que apontar a próxima variável inteira. O mesmo acontece com o decremento.

// p é um ponteiro inteiro contendo o valor 2000. p ++; // agora p = 2002. p--; // agora p novamente contém 2000 conforme decrementado por dois bytes.

  1. Uma matriz armazena as variáveis ​​de tipos de dados semelhantes e os tipos de dados das variáveis ​​devem corresponder ao tipo de matriz. Por outro lado, a variável ponteiro armazena o endereço de uma variável, de um tipo semelhante a um tipo de variável de ponteiro.
  2. Podemos gerar uma matriz de ponteiros, ou seja, matriz cujas variáveis ​​são as variáveis ​​de ponteiro. Por outro lado, podemos criar um ponteiro que aponte para uma matriz.
  3. Java suporta matriz, mas não suporta ponteiros.
  4. Um tamanho de matriz decide o número de variáveis ​​que pode armazenar enquanto; uma variável ponteiro pode armazenar o endereço apenas da variável

Nota:

Java não suporta ou evita estritamente ponteiros.

Conclusão:

Quando precisamos trabalhar em elementos de dados de tipo de dados semelhantes, então, em vez de trabalhar separadamente em variáveis, podemos criar uma matriz dessas variáveis ​​de tipos de dados semelhantes e, em seguida, operar com ele. Ponteiros são necessários para algum programa, ele oferece um poder tremendo, mas, infelizmente, se um ponteiro contiver um valor incorreto, será o bug mais difícil de encontrar.