一、指針數組的定義和基本使用
指針數組是指一個數組,其中的每個元素都是指針類型。指針可以指向各種數據類型,包括基本數據類型和自定義類數據類型。指針數組在C++程序中廣泛應用於存儲和訪問多個變量。
下面我們來看一個簡單的例子:定義一個整型指針數組,並將其初始化:
#include <iostream>
using namespace std;
int main() {
int* ptr[3];
int a = 1, b = 2, c = 3;
ptr[0] = &a;
ptr[1] = &b;
ptr[2] = &c;
cout << *ptr[0] << endl;
cout << *ptr[1] << endl;
cout << *ptr[2] << endl;
return 0;
}
運行結果:
1
2
3
在這個例子中,我們先定義了一個指針數組ptr,它包含三個元素,每個元素都是一個指向整型變量的指針。然後我們定義三個整型變量a、b、c,並將它們的地址存儲在ptr的對應元素中。最後,我們通過訪問指針數組ptr中元素的方式輸出了變量a、b、c的值。
二、指針數組在函數參數中的應用
指針數組廣泛應用於函數參數的傳遞,可以方便地進行多個參數的傳遞和修改。
下面我們以一個例子說明指針數組在函數參數中的應用:
#include <iostream>
using namespace std;
void swap(int* arr[]) {
int* temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
int main() {
int a = 1, b = 2;
int* arr[2] = {&a, &b};
cout << "Before swap: a=" << *arr[0] << ", b=" << *arr[1] << endl;
swap(arr);
cout << "After swap: a=" << *arr[0] << ", b=" << *arr[1] << endl;
return 0;
}
運行結果:
Before swap: a=1, b=2
After swap: a=2, b=1
在這個例子中,我們定義了一個swap函數,它的參數是一個整型指針數組。函數內部我們用temp變量存儲arr[0]指向的值,然後將arr[1]指向的值賦值給arr[0],最後將temp的值賦值給arr[1],完成了a、b變量值的交換。
三、指針數組的動態內存分配
指針數組也可以進行動態內存分配,這樣就可以在程序運行時根據需要調整內存的大小。
下面我們以一個動態添加元素的例子說明指針數組的動態內存分配:
#include <iostream>
using namespace std;
int main() {
int size = 3;
int** arr = new int*[size];
for (int i = 0; i < size; i++)
arr[i] = new int[i+1];
for (int i = 0; i < size; i++) {
for (int j = 0; j <= i; j++)
arr[i][j] = j+1;
for (int j = 0; j <= i; j++)
cout << arr[i][j] << " ";
cout << endl;
}
for (int i = 0; i < size; i++)
delete [] arr[i];
delete [] arr;
return 0;
}
運行結果:
1
1 2
1 2 3
在這個例子中,我們首先使用new關鍵字動態分配了一個指針數組arr,並指定其大小為3。然後我們使用for循環為指針數組的每個元素動態分配內存,並將其初始化為1至i+1的自然數序列。最後,我們通過嵌套的for循環遍歷指針數組,輸出結果。
注意,我們在程序結束時還需要用delete關鍵字釋放指針數組所佔用的內存,否則會造成內存泄漏。
原創文章,作者:THAV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/146436.html