C++ c++;数组默认参数,同时使函数重载
语言:C++ 我必须使函数“add”重载 “add”函数将数组[]作为参数 我写了我的代码,但它不工作 没有错误或警告,但它不会启动 我的代码有什么问题C++ c++;数组默认参数,同时使函数重载,c++,arrays,default-parameters,C++,Arrays,Default Parameters,语言:C++ 我必须使函数“add”重载 “add”函数将数组[]作为参数 我写了我的代码,但它不工作 没有错误或警告,但它不会启动 我的代码有什么问题 int add(int a[], int n, int b[]) { int sum = 0; for (int i = 0; i < n; i++) sum += (a[i] + b[i]); return sum; } int add(int a[], int n=5) { retur
int add(int a[], int n, int b[])
{
int sum = 0;
for (int i = 0; i < n; i++)
sum += (a[i] + b[i]);
return sum;
}
int add(int a[], int n=5)
{
return add(a, n, NULL);
}
intadd(inta[],intn,intb[]
{
整数和=0;
对于(int i=0;i
当您以自己的方式(例如inta[]
)声明类似于数组的参数时,编译器实际上会将该参数声明为指针
在add
函数的三个参数重载中,第三个参数(b
)可能是一个空指针,您不需要检查它。试图取消对空指针的引用会导致未定义的行为和可能的崩溃
如果是空指针,请不要访问b
int-add(int*a,int-n,int*b)
{
整数和=0;
对于(int i=0;i
索引b
,可以是NULL
。这是未定义的行为
避免这种陷阱的一个好方法是使用
std::vector
“它不会启动”显然是对事件的错误解释。赋值是否说A[]
是数组参数?这是误导,因为它实际上是一个指针。数组不是指针,尽早理解这一点很好。您认为传递NULL
有什么作用?提示:这不是一个零数组。嗯。。你的意思是我必须在返回的add中删除NULL(a,n,NULL)。那么,如果没有第三个参数,我如何给b[]赋值NULL或0值呢?@HoSuk no,我的意思是你需要在函数中添加if(b==nullptr)
检查。int add(int a[],int n,int b[]){if(b==nullptr)for(int I=0;I
Ah,b[i]=0代码>是一个错误。由于您修改了代码,现在程序可以正常工作了。我真的非常感谢你的帮助。也许我必须更加努力学习。
int add(int* a, int n, int* b)
{
int sum = 0;
for (int i = 0; i < n; i++)
{
if (b == nullptr)
sum += a[i];
else
sum += a[i] + b[i];
}
return sum;
}
sum += (a[i] + b[i]);