c++指針類型的函數

  下面隨筆將講述c++指針類型的函數。html

  原創連接:https://www.cnblogs.com/iFrank/p/14444379.htmlc++

指針類型的函數

  若函數的返回值是指針,該函數就是指針類型的函數。數組

   指針函數的定義形式函數

  存儲類型  數據類型  *函數名() 
  { //函數體語句
  }

批註 2020-03-04 221235.png

 1 錯誤的例子
 2 
 3 int main(){
 4     int* function();
 5     int* ptr= function();
 6     *prt=5; //危險的訪問!
 7     return 0;
 8 }
 9 int* function(){
10     int local=0; //非靜態局部變量做用域和壽命都僅限於本函數體內
11     return &local;
12 }//函數運行結束時,變量local被釋
 1 正確的例子1
 2 
 3 #include
 4 using namespace std;
 5 int main(){
 6     int array[10]; //主函數中定義的數組
 7     int* search(int* a, int num);
 8     for(int i=0; i<10; i++)
 9       cin>>array[i];
10     int* zeroptr= search(array, 10);  //將主函數中數組的首地址傳給子函數
11     return 0;
12 }
13 int* search(int* a, int num){ //指針a指向主函數中定義的數組
14     for(int i=0; i<num; i++)
15       if(a[i]==0)
16         return &a[i]; //返回的地址指向的元素是在主函數中定義的
17 }//函數運行結束時,a[i]的地址仍有
 1 正確的例子2
 2 
 3 #includeusing namespace std;
 4 int main(){
 5     int* newintvar();
 6     int* intptr= newintvar();
 7     *intptr=5; //訪問的是合法有效的地址
 8     delete intptr; //若是忘記在這裏釋放,會形成內存泄漏
 9     return 0;
10 }
11 int* newintvar (){ 
12     int* p=new int();
13     return p; //返回的地址指向的是動態分配的空間
14 }//函數運行結束時,p中的地址仍有效
15  
相關文章
相關標籤/搜索