English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Ponteiro e Array

Neste artigo, você vai entender a relação entre array e ponteiro e usá-los eficazmente no programa.

Ponteiroé a variável de armazenamento de endereço. O ponteiro não só pode armazenar o endereço de um único variável, mas também pode armazenararrayendereço do único elemento.

Veja o exemplo a seguir:

int* ptr;
int a[5];
ptr = &a[2];  // &a[2é a [5do terceiro elemento.]

Suponha que o ponteiro precise apontar para o quarto elemento do array, ou seja, o endereço de armazenamento do quarto elemento do array no caso acima.

Devido ao ptr apontar para o terceiro elemento no exemplo acima, ptr + 1Ponte para o quarto elemento.

Você pode pensar que, ptr +1fornecendo o endereço do próximo byte de ptr. Mas isso está errado.

porque o ponteiro ptr é um ponteiro para int e o tamanho do int é fixo para o sistema (64no sistema de bit operacional o tamanho do tipo int é4bytes). Portanto, ptr e ptr +1os endereços serão diferentes4bytes.

se o ponteiro ptr for um ponteiro para char, então ptr e ptr + 1os endereços serão diferentes1bytes, pois o tamanho de um caractere é1bytes.

Exemplo1: C ++Ponteiro e Array

C ++o programa usa arrays e ponteiros para exibir o endereço dos elementos do array

#include <iostream>
using namespace std;
int main()
{
    float arr[5];
    float *ptr;
    
    cout << "exibir o endereço usando o array: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "&arr[" << i << "] = " << &arr[i] << endl;
    }
    // ptr = &arr[0]
    ptr = arr;
    cout << "\nusando o ponteiro para exibir o endereço: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "ptr + " << i << " = " << ptr + i << endl;
    }
    return 0;
}

Saída de Resultado

exibir o endereço usando o array:
&arr[0] = 0015F718
&arr[1] = 0015F71C
&arr[2] = 0015F720
&arr[3] = 0015F724
&arr[4] = 0015F728
exibir o endereço usando o ponteiro:
ptr + 0 = 0015F718
ptr + 1 = 0015F71C
ptr + 2 = 0015F720
ptr + 3 = 0015F724
ptr + 4 = 0015F728

No programa acima, diferentes ponteiros ptr são usados para exibir o endereço dos elementos do array arr.

mas, os elementos do array podem ser acessados usando o mesmo nome do array arr para a notação de ponteiro. Por exemplo:

int arr[3];
&arr[0] equivalente a arr
&arr[1] equivalente a arr + 1
&arr[2] equivalente a arr + 2

Exemplo2: Ponteiro e Array

C ++o programa usa o sinal de ponteiro para exibir o endereço dos elementos do array.

#include <iostream>
using namespace std;
int main() {
    float arr[5];
    
    cout << "usando o sinal de ponteiro para exibir o endereço: " << endl;
    for (int i = 0; i < 5; ++i) {
        cout << arr + i << endl;
    }
    return 0;
}

Saída de Resultado

para exibir o endereço usando o sinal de ponteiro:
045FB90
045FB94
045FB98
045FB9C
045FBA0

Você sabe, o ponteiro ptr armazena o endereço, enquanto a expressão*ptr para fornecer o valor armazenado no endereço.

Da mesma forma, pode-se usar*(ptr + 1) obter o valor armazenado no ponteiro ptr + 1os valores.

Considere o seguinte código:

int ptr[5] = {3, 4, 5, 5, 3};
  • &ptr[0] igual a ptr ,*ptr igual a ptr[0]

  • &ptr[1] igual a ptr + 1,*(ptr + 1) igual a ptr[1]

  • &ptr[2] igual a ptr + 2,*(ptr + 2) igual a ptr[2]

  • &ptr[i] igual a ptr + i ,*(ptr + i) igual a ptr[i]

Exemplo3: C ++Ponteiro e Array

C ++um programa para inserir e exibir dados inseridos usando o sinal de ponteiro.

#include <iostream>
using namespace std;
int main() {
    float arr[5];
    
   // Inserir dados usando o sinal de ponteiro
    cout << "Entrada5Números: ";
    for (int i = 0; i < 5; ++i) {
        cin >> *(arr + i);
    }
    // Exibir dados usando o sinal de ponteiro
    cout << "Exibir Dados: " << endl;
    for (int i = 0; i < 5; ++i) {
        cout << *(arr + i) << endl;
    }
    return 0;
}

Saída de Resultado

Entrada5Números: 125
145
180
225
335
Exibir Dados:
125
145
180
225
335