C++ 函數返回數組

int* getNewArray(){
    
    //在堆區開闢空間存放數組(若是在棧區存放數組,隨着函數結束,數組名指向的地址存放的內容也會被系統釋放,而堆上的空間是由程序員自動給予分配和釋放的)
    int *p = malloc(COUNT * sizeof(int));
    
    //static int p[COUNT] = {0}; //或者採用static定義指針變量 (在數組p[COUNT]前面加入了static關鍵字,它就使得p[COUNT]存放在內存中的靜態存儲區中,所佔用的存儲單元不釋放直到整個程序運行結束)
    
    for (int i = 0; i < COUNT; i++)
   {
        p[i] = arc4random()%101;
        printf("%d ", p[i]);
    }
 
    printf("\n");
    
    for (int i = 0; i < COUNT - 1; i++) 
    {
        for (int j = 0; j < COUNT - i - 1; j++)
        {
            if (p[j] > p[j+1])
            {
                int temp = p[j];
                p[j] = p[j+1];
                p[j+1] = temp;
            }
        }
    }
    
    return p;
 
}

int main(int argc, const char * argv[])
  {
    
    
    int *p = NULL; //定義與封裝函數返回值類型相同的指針變量,來接收返回地址
    
    p = getNewArray();
    
    //打印排序後的函數
    for (int i = 0; i < COUNT; i++) 
   {
        printf("%d ", p[i]);
    }
    return 0;
}

 需要動態申請的啊,堆棧上面的數組是不能直接返回的會在函數退出的時候銷燬掉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章