程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 返回函數指針的函數,返回函數指針函數

返回函數指針的函數,返回函數指針函數

編輯:C++入門知識

返回函數指針的函數,返回函數指針函數


首先,數組不能被拷貝,所以函數不能返回數組,但可以返回數組的指針或引用,返回數組的指針有一下幾種方式:

1.使用類型別名

#include <iostream> 
using namespace std;
int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
typedef int type[10];           //或using type=int[10],type是類型別名
type *sum(int(&a)[10])            
{
    return &a;                //不能返回局部變量的指針或引用,所以函數形參采 &     
}

int main(int argc,char *argv[])
{    
    int(*p)[10] = sum(b);
    int *a = *p;
    for (int i = 0; i < 10; i++)
        cout << *(a + i) << endl;;
    return 1;
}

2.直接定義  

#include <iostream> 
 using namespace std;
int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
 int(*sum(int(&a)[10]))[10]    //數組的維度放在最後
 {
     return &a;
 }
  
 int main(int argc,char *argv[])
 {    
     int(*p)[10] = sum(b);
     int *a = *p;
     for (int i = 0; i < 10; i++)
         cout << *a++<< endl;;
     return 1;
 }

3.使用auto

#include <iostream> 
using namespace std;
int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
auto sum(int(&a)[10])->int(*)[10]            //auto fun(形參列表)->int(*)[10],將真正的類型寫後面
{
    return &a;
}

int main(int argc,char *argv[])
{    
    int(*p)[10] = sum(b);
    int *a = *p;
    for (int i = 0; i < 10; i++)
        cout << *a++<< endl;;
    return 1;
}

4.使用decltype

#include <iostream> 
using namespace std;
int b[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
decltype(b) *sum(int(&a)[10])           //使用decltype
{
    return &a;
}

int main(int argc,char *argv[])
{    
    int(*p)[10] = sum(b);
    int *a = *p;
    for (int i = 0; i < 10; i++)
        cout << *a++<< endl;;
    return 1;
}

 



 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved