English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans cet article, vous découvrirez la relation entre les tableaux et les pointeurs et utiliserez efficacement ces derniers dans votre programme.
指针est une variable qui stocke des adresses. Les pointeurs peuvent non seulement stocker l'adresse d'un seul variable, mais aussil'arrayl'adresse d'un élément unitaire.
Voyons un exemple suivant :
int* ptr; int a[5]; ptr = &a[2]; // &a[2] est a[5l'adresse du troisième élément.]
Supposons que le pointeur doit pointer vers le quatrième élément de l'array, c'est-à-dire l'adresse de stockage du quatrième élément de l'array dans le cas précédent.
En raison de ptr pointant vers le troisième élément de l'exemple précédent, ptr + 1Il pointe vers l'élément quatrième.
Vous pourriez penser que, ptr +1Il vous fournit l'adresse du prochain octet de ptr. Mais c'est incorrect.
C'est parce que le pointeur ptr est un pointeur de type int, et la taille de int est fixe pour le système d'exploitation (64La taille du type int dans le système d'exploitation est4octets). Par conséquent, ptr et ptr +1diffèrent de4octets.
Si le pointeur ptr est un pointeur de type char, alors l'adresse de ptr et l'adresse de ptr + 1Les adresses entre1octets, car la taille d'un caractère est1octets.
C ++Le programme affiche les adresses des éléments du tableau et des pointeurs.
#include <iostream> using namespace std; int main() { float arr[5]; float *ptr; cout << "Affichage de l'adresse en utilisant le tableau : " << endl; for (int i = 0; i < 5; ++i) { cout << "&arr[" << i << "] = " << &arr[i] << endl; } // ptr = &arr[0] ptr = arr; cout << "\nAffichage de l'adresse en utilisant le pointeur : " << endl; for (int i = 0; i < 5; ++i) { cout << "ptr + " << i << " = " << ptr + i << endl; } return 0; }
输出结果
Affichage de l'adresse en utilisant le tableau : &arr[0] = 0015F718 &arr[1] = 0015F71C &arr[2] = 0015F720 &arr[3] = 0015F724 &arr[4] = 0015F728 Affichage de l'adresse en utilisant le pointeur : ptr + 0 = 0015F718 ptr + 1 = 0015F71C ptr + 2 = 0015F720 ptr + 3 = 0015F724 ptr + 4 = 0015F728
Dans le programme ci-dessus, les adresses des éléments du tableau arr sont affichées avec des pointeurs ptr différents.
Mais, les éléments du tableau peuvent être accédés en utilisant le nom du tableau arr avec la notation de pointeur. Par exemple :
int arr[3]; &arr[0] équivaut à arr &arr[1] équivaut à arr + 1 &arr[2] équivaut à arr + 2
C ++Le programme affiche les adresses des éléments d'un tableau à l'aide des symboles de pointeur.
#include <iostream> using namespace std; int main() { float arr[5]; cout << "Affichage de l'adresse en utilisant les symboles de pointeur : " << endl; for (int i = 0; i < 5; ++i) { cout << arr + i << endl; } return 0; }
输出结果
Affichage de l'adresse en utilisant les symboles de pointeur : 045FB90 045FB94 045FB98 045FB9C 045FBA0
Vous savez, le pointeur ptr conserve l'adresse, tandis que l'expression*ptr pour obtenir la valeur stockée à l'adresse.
De même, on peut utiliser*(ptr + 1) pour obtenir la valeur stockée dans le pointeur ptr + 1des valeurs.
Considérez le code suivant :
int ptr[5] = {3, 4, 5, 5, 3};
&ptr[0] égale à ptr ,*ptr égale à ptr[0]
&ptr[1] égale à ptr + 1,*(ptr + 1) égale à ptr[1]
&ptr[2] égale à ptr + 2,*(ptr + 2) égale à ptr[2]
&ptr[i] égale à ptr + i ,*(ptr + i) égale à ptr[i]
C ++programme pour insérer et afficher les données entrées avec des symboles de pointeur.
#include <iostream> using namespace std; int main() { float arr[5]; // 使用指针符号插入数据 cout << "输入5个数字: "; for (int i = 0; i < 5; ++i) { cin >> *(arr + i) ; } // 使用指针符号显示数据 cout << "显示数据: " << endl; for (int i = 0; i < 5; ++i) { cout << *(arr + i) << endl ; } return 0; }
输出结果
输入5个数字: 125 145 180 225 335 显示数据: 125 145 180 225 335