設定指標起始值
當指標被宣告後,只是在記憶體中宣告了一個儲存指標的記憶體空間,裡面的位址值並沒有設定,因此就必須利用宣告變數並將變數的位址值設定給指標(這樣記憶體才會被配置出來)。當利用new運算子配置記憶體後,將會傳回被配置記憶體的位址值。
資料型態 *指標名稱=new資料型態(起始值) |
int
*iptr =new int(10) //有門牌號碼,沒有招牌 |
使用new運算子配置記憶體,在結束程式或使用完畢後必須用delete運算子來釋放記憶體。
delete
變數名稱 //變數名稱為指向配置記憶體的指標名稱 |
delete
iptr |
範例:
//用new運算子指定指標起始值 #include <iostream.h>
void main() //主程式開始
{
int *ptr
= new int (20); //宣告指標,並配置指標使用的記憶體
cout << " 指標名稱| 指向位址 | 位址值 \n";
cout << "----------------------------------\n"; //輸出標題
cout << " ptr | " << ptr << " | " <<
*ptr << endl;
//輸出指標變數的位址與值
delete ptr; //釋放配置給 ptr 的記憶體空間
} //主程式結束 |
動態宣告陣列大小
資料型態 *指標名稱;
指標名稱=new資料型態[一維大小] |
資料型態 *指標名稱=new資料型態(起始值) |
int
*ptr;
cin >> n;
ptr =new int [n]; |
cin
>> n;
int *ptr =new int [n]; |
使用new運算子配置記憶體,在結束程式或使用完畢後必須用delete運算子來釋放記憶體。
delete[]
指標名稱 |
delete []
ptr; |
範例:
//動態配置陣列大小 #include
<iostream.h>
void main() //主程式開始
{
int n; //儲存使用者輸入的陣列維度
cout << "請輸入陣列的大小 :\n";
cin >> n; //讀取陣列的維度
int *ptr = new int [n]; //動態配置陣列的維度
cout << "請輸入陣列元素值 :\n";
for (int i = 0 ; i
< n ; i++)
{
cout << "array [" << i << "] = ";
cin >> *(ptr + i); //讀取陣列元素值
}
cout << "\n陣列內容為...\n";
for ( i = 0 ; i < n ; i++)
{
cout << "array [" << i << "] = " <<
ptr[i];
//列印陣列元素,ptr[i] 與 *(ptr + i) 同義
cout << endl;
}
delete [] ptr; //釋放記憶體空間
} //主程式結束 |
|