C++中的指針函數是返回指針的函數。它可以返回指向任何數據類型的指針,包括基本數據類型、自定義數據類型、數組等。
指針函數的定義形式如下:
返回類型* 函數名(參數列表) {
// 函數體
}
其中,返回類型
表示函數返回的指針類型,*
表示指針類型的標識符,函數名
是函數的名稱,參數列表
是函數可以接受的參數。
指針函數的用法如下:
int* getNumber() {
int* ptr = new int;
*ptr = 10;
return ptr;
}
int main() {
int* numPtr = getNumber();
cout << *numPtr << endl; // 輸出:10
delete numPtr;
return 0;
}
struct Person {
string name;
int age;
};
Person* createPerson(string name, int age) {
Person* ptr = new Person;
ptr->name = name;
ptr->age = age;
return ptr;
}
int main() {
Person* personPtr = createPerson("Alice", 20);
cout << personPtr->name << endl; // 輸出:Alice
cout << personPtr->age << endl; // 輸出:20
delete personPtr;
return 0;
}
int* createArray(int size) {
int* arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
return arr;
}
int main() {
int* arrPtr = createArray(5);
for (int i = 0; i < 5; i++) {
cout << arrPtr[i] << " "; // 輸出:1 2 3 4 5
}
delete[] arrPtr;
return 0;
}
需要注意的是,在使用完指針函數返回的指針后,需要手動釋放內存,以防止內存泄漏。可以使用delete
釋放單個指針指向的內存,或者使用delete[]
釋放指向數組的指針指向的內存。