English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本文中,您将了解数组与指针之间的关系,并在程序中有效地使用它们。
指针是保存地址的变量。指针不仅可以存储单个变量的地址,还可以存储数组单元的地址。
看以下示例:
int* ptr; int a[5]; ptr = &a[2]; // &a[2]是a[5]的第三个元素的地址。
假设指针需要指向数组的第四个元素,即在上述情况下的第四个数组元素的保存地址。
由于ptr指向上面示例中的第三个元素,ptr + 1将指向第四个元素。
您可能会认为,ptr +1为您提供了ptr的下一个字节的地址。 但这是不正确的。
这是因为指针ptr是指向int的指针,并且int的大小对于操作系统是固定的(64位操作系统中int类型大小是4字节)。 因此,ptr和ptr +1之间的地址相差4个字节。
如果指针ptr是指向char的指针,那么ptr和ptr + 1之间的地址将相差1个字节,因为一个字符的大小是1个字节。
C++程序使用数组和指针显示数组元素的地址
#include <iostream> using namespace std; int main() { float arr[5]; float *ptr; cout << "使用数组显示地址: " << endl; for (int i = 0; i < 5; ++i) { cout << "&arr[" << i << "] = " << &arr[i] << endl; } // ptr = &arr[0] ptr = arr; cout << "\nVisualizzazione degli indirizzi utilizzando i puntatori: " << endl; for (int i = 0; i < 5; ++i) { cout << "ptr + " << i << " = " << ptr + i << endl; } return 0; }
结果输出
Visualizzazione degli indirizzi utilizzando l'array: &arr[0] = 0015F718 &arr[1] = 0015F71C &arr[2] = 0015F720 &arr[3] = 0015F724 &arr[4] = 0015F728 Visualizzazione degli indirizzi utilizzando i puntatori: ptr + 0 = 0015F718 ptr + 1 = 0015F71C ptr + 2 = 0015F720 ptr + 3 = 0015F724 ptr + 4 = 0015F728
Nel programma sopra, gli indirizzi degli elementi dell'array arr vengono visualizzati utilizzando diversi puntatori ptr.
Ma gli elementi dell'array possono essere acceduti utilizzando il nome dell'array arr stesso con la notazione di puntatore. Ad esempio:
int arr[3]; &arr[0] è equivalente a arr &arr[1] è equivalente a arr + 1 &arr[2] è equivalente a arr + 2
Il programma C++ utilizza i simboli di puntatore per visualizzare gli indirizzi degli elementi dell'array.
#include <iostream> using namespace std; int main() { float arr[5]; cout << "Visualizzazione degli indirizzi utilizzando i simboli di puntatore: " << endl; for (int i = 0; i < 5; ++i) { cout << arr + i << endl; } return 0; }
结果输出
Visualizzazione degli indirizzi utilizzando i simboli di puntatore: 045FB90 045FB94 045FB98 045FB9C 045FBA0
Sapete che il puntatore ptr memorizza l'indirizzo, mentre l'espressione *ptr fornisce il valore memorizzato all'indirizzo.
Allo stesso modo, si può ottenere il valore memorizzato in ptr + 1 utilizzando *(ptr + 1).
Pensate al seguente codice:
int ptr[5] = {3, 4, 5, 5, 3};
&ptr[0] è uguale a ptr, *ptr è uguale a ptr[0]
&ptr[1] è uguale a ptr + 1, *(ptr + 1) è uguale a ptr[1]
&ptr[2] è uguale a ptr + 2, *(ptr + 2) è uguale a ptr[2]
&ptr[i] è uguale a ptr + i, *(ptr + i) è uguale a ptr[i]
Programma C++ per inserire e visualizzare i dati immessi con il simbolo di puntatore.
#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