读书人

怎么才能在函数中计算main中数组的元素

发布时间: 2013-06-25 23:45:41 作者: rapoo

如何才能在函数中计算main中数组的元素个数?
请问一下,我在Greedy_Activity_Selector3中,计算sizeof s时的值和main函数中不一样,是否是因为Greedy_Activity_Selector3中s是int*,所以计算的是int*的大小?但我把函数参数改为(int s[],int f[])结果依旧,那么如何才能在函数中计算main中数组的元素个数呢?还是只能计算完了,然后传进来。

#include<iostream>
using std::cout;
using std::endl;


int* Greedy_Activity_Selector3(int* s,int* f)
{
//show a int array
for(int i=0;i<12;i++)
cout<<s[i]<<' ';
cout<<endl;

int n=sizeof s/sizeof(int); //sizeof s为4cout<<endl;

int* A=new int[n];
int Aindex=0;
A[Aindex]=1;

int k=1;
for(int m=2;m<=n;m++)
{
if(s[m]>=f[k])
{
A[++Aindex]=m;
k=m;
}
}

A[++Aindex]=INT_MIN;

return A;
}


int main()
{
int const ActivityNo=11;
int s[ActivityNo]={1,3,0,5,3,5,6,8,8,2,12};
int f[ActivityNo]={4,5,6,7,8,9,10,11,12,14,16};
int* A;

//show a int array
for(int i=0;i<12;i++)
cout<<s[i]<<' ';
cout<<endl;

cout<<sizeof s/sizeof(int); //sizeof s为11cout<<endl;

A=Greedy_Activity_Selector3(s,f);
//for(int i=1;i<=ActivityNo;i++)
//cout<<*(A+i)<<" ";

int* p=A;
while(*p!=INT_MIN)
{
cout<<*p;
p++;
}

return 0;
}
[解决办法]
数组名和指针的区别

一般常用的办法是:当传递的参数是数组的时候,一般传递数组首地址+数组长度
[解决办法]
Greedy_Activity_Selector3(int (&s)[11],int (&f)[11])
[解决办法]
直接传进来吧。数组传递方式,会退化为指针,不带长度信息的,凡是数组的传递,最好将大小传进来

读书人网 >C++

热点推荐