English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليميات C++ الأساسية

C++ 流程控制

الوظائف الخاصة بـ C++

C++ 数组 & 字符串

C++ 数据结构

C++ 类 & 对象

المراجع الخاصة بـ C++

الوراثة الخاصة بـ C++

تعليميات STL الخاصة بـ C++

C++ 参考手册

المساحات والأدوات الخاصة بـ C++

在本文中,您将学习将数组传递给C ++中的函数。您将学习如何传递一维和多维数组。

数组可以作为参数传递给函数。也可以从函数返回数组。考虑以下示例,将一维数组传递给函数:

示例1:将一维数组传递给函数

C ++程序通过将一维数组传递给函数来显示5个学生的分数。

#include <iostream>
using namespace std;
void display(int marks[5]);
int main()
{
    int marks[5] = {88, 76, 90, 61, 69};
    display(marks);
    ترeturnُ 0;
}
void display(int m[5])
{
    cout << "显示分数:  "<< endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "Student "<< i + 1 <<": "<< m[i] << endl;
    }
}

نتائج الإخراج

显示分数: 
Student 1: 88
Student 2: 76
Student 3: 90
Student 4: 61
Student 5: 69

将数组作为参数传递给函数时,仅将数组名称用作参数。

display(marks);

还要注意将数组作为参数与变量传递时的区别。

void display(int m[5]);

上面代码中的参数marks表示数组marks[5]的第一个元素的内存地址。

函数声明中的形式参数int m [5]转换为int * m;。 该指针指向由数组marks指向的相同地址。

这就是原因,尽管该函数是在用户定义的函数中使用不同的数组名称m[5]进行操作,但是原始数组仍在marks进行操作。

C ++以这种方式处理将数组传递给函数以节省内存和时间。

将多维数组传递给函数

多维数组可以通过与一维数组相似的方式传递。考虑以下示例,将二维数组传递给函数:

示例2:将多维数组传递给函数

C ++程序通过将二维数组的元素传递给函数来显示它。

#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);
    ترeturnُ 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] << " ";
        }
    }
}

نتائج الإخراج

عرض القيمة: 
3 4 9 5 7 1

في البرنامج المذكور أعلاه، يتم نقل مجموعة متعددة الأبعاد num إلى دالة display().

في داخل دالة display()، يستخدم الدوران المدمج لدوران مجموعة n (num).

يستخدم هذا البرنامج 2لدوراناستكشاف عناصر مجموعة ثنائية الأبعاد. إذا كان لديك مجموعة ثلاثية الأبعاد، يجب استخدامه 3 for 循ح

في النهاية، يتم طباعة جميع العناصر على الشاشة.

ملاحظة: يمكن نقل الأبعاد أكبر من 2的多维数组 بطرق مشابهة لسلسلة الأبعاد الثنائية.

C++ من الدالة العودة إلى مجموعة

لا يسمح C++ بالعودة إلى مجموعة كاملة كمعامل للدالة. ولكن يمكنك العودة إلى سهم مجموعة غير محددة الأبعاد.

إذا كنت ترغب في العودة إلى الدالة مجموعة مكانة أحادية الأبعاد، يجب أن تعلن دالة العودة إلى السهم الدالة، مثلما يلي:

int *myFunction()
{
.
.
.
}

إلى جانب ذلك، لا يدعم C++ العودة إلى عنوان المتغير المحلي خارج الدالة، إلا إذا تم تعريف المتغير المحلي كـ ثابت المتغيرات.

الآن، دعونا ننظر إلى الدالة التالية، التي تُنتج 10 أرقام عشوائية ونستخدم مجموعة لتحويلها، مثلما يلي:

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
// -the function to generate and return random numbers
int *getRandom()
{
  static int r[8];
 
  // -set the seed
  srand((unsigned)time(NULL));
  for (int i = 0; i < 8; ++i)
  {
    r[i] = rand();
    cout << r[i] << endl;
  }
 
  returnُ r;
}
 
// -the main function to call the above defined function
int main ()
{
   // -pointer to an integer
   int *p;
 
   p = getRandom();
   for (int i = 0; i < 8; i++)
   {
       cout << "*(p + " << i << ") : ";
       cout << *(p + i) << endl;
   }
 
   ترeturnُ 0;
}

عندما يتم تجميع وكتابة الكود أعلاه وتنفيذه، سيتم إنتاج النتيجة التالية:

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