C++ 错误:调用memsetNincr没有匹配的函数

C++ 错误:调用memsetNincr没有匹配的函数,c++,C++,函数memsetNincr用整数填充一个大小为“size”的数组,每个整数的值大于最后一个。我最近在函数方面遇到了这个问题 #include <iostream> using namespace std; void memsetNincr(int, int, int); int main() { int size, initVal; cout << "Enter size of array followed by the value of its'

函数memsetNincr用整数填充一个大小为“size”的数组,每个整数的值大于最后一个。我最近在函数方面遇到了这个问题

#include <iostream>
using namespace std;

void memsetNincr(int, int, int);

int main()
{
    int size, initVal;

    cout << "Enter size of array followed by the value of its' first element: \n";
    cin >> size >> initVal;

    int array[size];

    cout << memsetNincr(array, size, initVal) << endl;
    return 0;
}

void memsetNincr(int array[], int howmany, int startingVal)
{
    int i;

    array[0] = startingVal;

    for (i=0; i<=howmany; i++)
    {
        array[i] = array[i-1]-1;
        cout << array[i] << "  ";
    }
}
#包括
使用名称空间std;
void memsetNincr(int,int,int);
int main()
{
int大小,initVal;
cout>大小>>初始值;
int数组[大小];

cout
cout
需要一个流或可以强制转换为流的内容。您的函数返回void,并且无法强制转换void。请将函数更改为返回字符串或stringstream对象,或者在cout外部调用它

编辑:在
cout
之外调用它,我的意思是这样的:

int main()
  {
  int size, initVal;

  cout << "Enter size of array followed by the value of its' first element: \n";
  cin >> size >> initVal;

  int array[size];

  memsetNincr(array, size, initVal);
  cout << endl;
  return 0;
}
intmain()
{
int大小,initVal;
cout>大小>>初始值;
int数组[大小];
memsetNincr(数组、大小、初始值);

cout第一次运行
i=0

array[i] = array[i-1]-1;
所以

所以

array[0]=array[-1]-1;->错误
(i=1;ichange
cout=1======

您的函数声明不正确,参数
int-array[]
int*array

void memsetNincr(int array[], int howmany, int startingVal);
或 void memsetNincr(int*array,int howmount,int startingVal)

=======2======

memsetNincr
无效,表示函数不返回任何值,因此无法通过
cout
printf
打印

cout << memsetNincr(array, size, initVal) << endl;
这是你的密码

#include <iostream>
using namespace std;

void memsetNincr(int*, int, int);

int main()
{
    int size, initVal;

    cout << "Enter size of array followed by the value of its' first element: \n";
    cin >> size >> initVal;

    int array[size];

    //cout << memsetNincr(array, size, initVal) << endl;
    memsetNincr(array, size, initVal);

    return 0;
}

void memsetNincr(int array[], int howmany, int startingVal)
{
    int i;

    array[0] = startingVal;

    for (i=0; i<=howmany; i++)
    {
        array[i] = array[i-1]-1;
        cout << array[i] << "  ";
     }

}
#包括
使用名称空间std;
void memsetNincr(int*,int,int);
int main()
{
int大小,initVal;
cout>大小>>初始值;
int数组[大小];

/c/t> 在C++中没有可变长度数组。因此数组的大小应该是常量表达式。< /p> 如果元素的数量由用户给定,则可以使用标题
中声明的标准类
std::vector

函数
memsetNincr
接受数组类型的第一个参数

void memsetNincr(int *, int, int);

此外,该函数具有返回类型
void
,因此您不能在这样的语句中使用它

cout << memsetNincr(array, size, initVal) << endl;

因为索引的有效范围是[Cux](0,HOMANY-1] < /> >/P><代码> int数组[Stime];是ISO C++中非法的。C样式数组的维数必须在编译时知道。一些编译器实现扩展(imHo,一个穷的)这使得这段代码在某些情况下可以像预期的那样工作。您的

memsetNincr
中的循环写越界,读越界。
cout << memsetNincr(array, size, initVal) << endl;
memsetNincr(array, size, initVal);
#include <iostream>
using namespace std;

void memsetNincr(int*, int, int);

int main()
{
    int size, initVal;

    cout << "Enter size of array followed by the value of its' first element: \n";
    cin >> size >> initVal;

    int array[size];

    //cout << memsetNincr(array, size, initVal) << endl;
    memsetNincr(array, size, initVal);

    return 0;
}

void memsetNincr(int array[], int howmany, int startingVal)
{
    int i;

    array[0] = startingVal;

    for (i=0; i<=howmany; i++)
    {
        array[i] = array[i-1]-1;
        cout << array[i] << "  ";
     }

}
void memsetNincr(int *, int, int);
void memsetNincr(int [], int, int);
cout << memsetNincr(array, size, initVal) << endl;
for (i=0; i < howmany; i++)
          ^^^^^^^^^^^