来个C++高手,关于数组作形参时的默认值问题
例inta(intb=0){a=b;returnb;}这个函数直接调用a();的返回值为0,因为默认参数为0我现想要的是当形参为数组时默认参数该如何设置,比如inta[1...
例int a(int b=0){a=b;return b;}
这个函数直接调用a();的返回值为0,因为默认参数为0
我现想要的是当形参为数组时默认参数该如何设置,比如
int a[12]={};
int b[12];
int *arr(int a[]){
for(int i=0;i<12;i++)b[i]=a[i];
return b;
}
如果调用arr(a);显然返回的指针对应的数组全为0
我想要的是arr()一样可以达到这个效果 展开
这个函数直接调用a();的返回值为0,因为默认参数为0
我现想要的是当形参为数组时默认参数该如何设置,比如
int a[12]={};
int b[12];
int *arr(int a[]){
for(int i=0;i<12;i++)b[i]=a[i];
return b;
}
如果调用arr(a);显然返回的指针对应的数组全为0
我想要的是arr()一样可以达到这个效果 展开
5个回答
展开全部
a(int b=0) 如果直接使用a(),因为b=0的存在,所以皮尺腔是就正确了。
而 int *arr(int a[]) 不存在默认赋值,再说了。你循环12次,你怎么保证 a就困闷是的大小呢。
由于你的b[12]是全局定义,你在arr对b进行燃衫了循环赋值,没有任何必要return b,b本来就是全局嘛。既然int a[12]也是全局
不如这样
int a[12]={};
int b[12];
void arr()//不用任何参数
{
for(int i=0;i<12;i++)b[i]=a[i];
}
而 int *arr(int a[]) 不存在默认赋值,再说了。你循环12次,你怎么保证 a就困闷是的大小呢。
由于你的b[12]是全局定义,你在arr对b进行燃衫了循环赋值,没有任何必要return b,b本来就是全局嘛。既然int a[12]也是全局
不如这样
int a[12]={};
int b[12];
void arr()//不用任何参数
{
for(int i=0;i<12;i++)b[i]=a[i];
}
展开全部
不可以的,一个变量就团乎一个初始值,数组没法的
可以这样,使用指者或销针,首游将指针初始化为NULL,在函数里做点判断。
int *arr(int *a=NULL)
{
if(a)
{
for(int i=0; i<12; i++)b[i]=a[i];
}
else
{
for(int i=0; i<12; i++)b[i]=0;
}
return b;
}
可以这样,使用指者或销针,首游将指针初始化为NULL,在函数里做点判断。
int *arr(int *a=NULL)
{
if(a)
{
for(int i=0; i<12; i++)b[i]=a[i];
}
else
{
for(int i=0; i<12; i++)b[i]=0;
}
return b;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个简单
///////////// 数组的大小必须传,否则
////////////[1] 就用类模拟 动态开辟内存
/段睁//////////[2] 就用全局变量初始化数组握汪岁大小
int *arr(int a[] = NULL, int size = 0){
if (0==size) return NULL;
int *p = new int[size];
if (NULL==p) cerr<<"new array error!"<陵州<endl;
if (NULL==a) {
for(int i=0; i<size; i++){
p[i] = 0;
}
}
else{
for(int i=0; i<size; i++){
p[i] = a[i];
}
}
return p;
}
///////////// 数组的大小必须传,否则
////////////[1] 就用类模拟 动态开辟内存
/段睁//////////[2] 就用全局变量初始化数组握汪岁大小
int *arr(int a[] = NULL, int size = 0){
if (0==size) return NULL;
int *p = new int[size];
if (NULL==p) cerr<<"new array error!"<陵州<endl;
if (NULL==a) {
for(int i=0; i<size; i++){
p[i] = 0;
}
}
else{
for(int i=0; i<size; i++){
p[i] = a[i];
}
}
return p;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是这个?看看!配租唤
#include<iostream>
using namespace std;
int a[12]={0};
int *arr(int aa[]=a){int*b=new int[12];
for(int i=0;i<12;i++)b[i]=aa[i];
return b;
}
void main()
{
int*b=new int[12];
for(int i=0;i<12;i++)cout<<a[i]<<' ';cout<<培凯'\n';
b=arr(a);
for( i=0;i<12;i++)cout<<b[i]<<型兄' ';cout<<'\n';
b=arr();
for( i=0;i<12;i++)cout<<b[i]<<' ';cout<<'\n';
}
#include<iostream>
using namespace std;
int a[12]={0};
int *arr(int aa[]=a){int*b=new int[12];
for(int i=0;i<12;i++)b[i]=aa[i];
return b;
}
void main()
{
int*b=new int[12];
for(int i=0;i<12;i++)cout<<a[i]<<' ';cout<<培凯'\n';
b=arr(a);
for( i=0;i<12;i++)cout<<b[i]<<型兄' ';cout<<'\n';
b=arr();
for( i=0;i<12;i++)cout<<b[i]<<' ';cout<<'\n';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好!!
不是很理解你的意思,可以交流一下吧!!
不是很理解你的意思,可以交流一下吧!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询