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