C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類 & 對象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊

C++ 數(shù)組和函數(shù)

在本文中,您將學習將數(shù)組傳遞給C ++中的函數(shù)。您將學習如何傳遞一維和多維數(shù)組。

數(shù)組可以作為參數(shù)傳遞給函數(shù)。也可以從函數(shù)返回數(shù)組??紤]以下示例,將一維數(shù)組傳遞給函數(shù):

示例1:將一維數(shù)組傳遞給函數(shù)

C ++程序通過將一維數(shù)組傳遞給函數(shù)來顯示5個學生的分數(shù)。

#include <iostream>
using namespace std;

void display(int marks[5]);

int main()
{
    int marks[5] = {88, 76, 90, 61, 69};
    display(marks);
    return 0;
}

void display(int m[5])
{
    cout << "顯示分數(shù):  "<< endl;

    for (int i = 0; i < 5; ++i)
    {
        cout << "Student "<< i + 1 <<": "<< m[i] << endl;
    }
}

輸出結(jié)果

顯示分數(shù): 
Student 1: 88
Student 2: 76
Student 3: 90
Student 4: 61
Student 5: 69

將數(shù)組作為參數(shù)傳遞給函數(shù)時,僅將數(shù)組名稱用作參數(shù)。

display(marks);

還要注意將數(shù)組作為參數(shù)與變量傳遞時的區(qū)別。

void display(int m[5]);

上面代碼中的參數(shù)marks表示數(shù)組marks[5]的第一個元素的內(nèi)存地址。

函數(shù)聲明中的形式參數(shù)int m [5]轉(zhuǎn)換為int * m;。 該指針指向由數(shù)組marks指向的相同地址。

這就是原因,盡管該函數(shù)是在用戶定義的函數(shù)中使用不同的數(shù)組名稱m[5]進行操作,但是原始數(shù)組仍在marks進行操作。

C ++以這種方式處理將數(shù)組傳遞給函數(shù)以節(jié)省內(nèi)存和時間。

將多維數(shù)組傳遞給函數(shù)

多維數(shù)組可以通過與一維數(shù)組相似的方式傳遞。考慮以下示例,將二維數(shù)組傳遞給函數(shù):

示例2:將多維數(shù)組傳遞給函數(shù)

C ++程序通過將二維數(shù)組的元素傳遞給函數(shù)來顯示它。

#include <iostream>
using namespace std;

void display(int n[3][2]);

int main()
{
    int num[3][2] = {
        {3, 4},
        {9, 5},
        {7, 1}

    };
    display(num);

    return 0;
}

void display(int n[3][2])
{

    cout << "顯示值: " << endl;
    for(int i = 0;  i < 3; ++i)
    {
        for(int j = 0; j < 2; ++j)
        {
            cout << n[i][j] << " ";
        }
    }
}

輸出結(jié)果

顯示值: 
3 4 9 5 7 1

在上面的程序中,多維數(shù)組num被傳遞給函數(shù)display()。

在display()函數(shù)內(nèi)部,使用嵌套的for循環(huán)遍歷數(shù)組n(num)。

該程序使用2個for循環(huán)遍歷二維數(shù)組中的元素。如果是一個三維數(shù)組,那么應該使用3 for循環(huán)。

最后,所有元素都被打印到屏幕上。

注意: 維度大于2的多維數(shù)組可以以類似于二維數(shù)組的方式傳遞。

C++ 從函數(shù)返回數(shù)組

C++ 不允許返回一個完整的數(shù)組作為函數(shù)的參數(shù)。但是,您可以通過指定不帶索引的數(shù)組名來返回一個指向數(shù)組的指針。

如果您想要從函數(shù)返回一個一維數(shù)組,您必須聲明一個返回指針的函數(shù),如下:

int * myFunction()
{
.
.
.
}

另外,C++ 不支持在函數(shù)外返回局部變量的地址,除非定義局部變量為 static 變量。

現(xiàn)在,讓我們來看下面的函數(shù),它會生成 10 個隨機數(shù),并使用數(shù)組來返回它們,具體如下:

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
// 要生成和返回隨機數(shù)的函數(shù)
int * getRandom( )
{
  static int  r[8];
 
  // 設(shè)置種子
  srand( (unsigned)time( NULL ) );
  for (int i = 0; i < 8; ++i)
  {
    r[i] = rand();
    cout << r[i] << endl;
  }
 
  return r;
}
 
// 要調(diào)用上面定義函數(shù)的主函數(shù)
int main ()
{
   // 一個指向整數(shù)的指針
   int *p;
 
   p = getRandom();
   for ( int i = 0; i < 8; i++ )
   {
       cout << "*(p + " << i << ") : ";
       cout << *(p + i) << endl;
   }
 
   return 0;
}

當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:

30737
23110
21765
14820
8295
12330
28395
191
*(p + 0) : 30737
*(p + 1) : 23110
*(p + 2) : 21765
*(p + 3) : 14820
*(p + 4) : 8295
*(p + 5) : 12330
*(p + 6) : 28395
*(p + 7) : 191
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清