指针和声明难度

时间:2014-01-26 18:38:13

标签: c++ arrays pointers

这是我划分的一段代码。我基本上需要创建3个函数:

  1. 使用随机数填充数组
  2. 在屏幕上打印阵列
  3. 不包含在此篇文章中。
  4. 我的问题是我得到了

    C2664错误:无法将参数1从int [6] [6]转换为int(*)[]。

    我无法弄清楚我的代码有什么问题。我还想检查一下我是如何编写指针来填充和打印数组的。

    #include "stdafx.h"
    #include <iostream>
    #include <math.h>
    #include <time.h>
    #include <iomanip>
    #include <array>
    #include <algorithm>
    
    using namespace std;
    const int AS = 6;
    void FillingRandomly(int *);
    void printing(int *);
    
    int c;
    
    int main()    
    {
        int funny = 0;
        int timpa = 0;
        int counter = 0;
        int Array[AS][AS];
        srand(time(0));    
    
        FillingRandomly(Array);     
    
        cout << "The unsorted array is" << endl << endl;    
        printing(Array);    
    
        cout << "The sorted array is" << endl << endl;
    
        system("PAUSE");    
        return 0;    
    }
    
    void FillingRandomly(int *Array) {
        *Array = rand()%87 +12;
        *Array ++;
    }
    
    
    
    void printing(int *ArrayPtr) {
        int counter = 0;
        while(*ArrayPtr<AS*AS) {
        cout<<*ArrayPtr;
        *ArrayPtr++;
    
        if (*ArrayPtr%AS == 0)
            cout << endl << endl;
        }   
    }
    

1 个答案:

答案 0 :(得分:0)

不要使用指向int的指针,因为你想将数组而不是指针传递给你的函数。

另外,通过引用传递它。为此,请更改函数的声明:

void FillingRandomly(int (&Array)[AS][AS]);
void printing(const int (&Array)[AS][AS]);

printing的声明不同,因为它不需要更改数组)

定义必须以相同的方式编写:

void FillingRandomly(int (&Array)[AS][AS])
{
    ...
}

另请注意,在C ++数组中,有时(或最常见 - 取决于您所询问的对象)由标准库类表示,如std::vectorstd::array。我不会展示使用它们来保持我的答案集中的代码。