C++ 错误:调用memsetNincr没有匹配的函数
函数memsetNincr用整数填充一个大小为“size”的数组,每个整数的值大于最后一个。我最近在函数方面遇到了这个问题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'
#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数组[大小];
coutcout
需要一个流或可以强制转换为流的内容。您的函数返回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;ichangecout=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++)
^^^^^^^^^^^