考虑到我有以下数组:
int * a = new int[1000];
我想通过引用将此数组传递给函数。如果我要从main
调用此函数:
int main()
{
int * a = new int[1000];
func(a);
//print the elements of the array
for(int i=1;i<=sizeof(a);i++) cout<<a[i]<<" ";
return 0;
}
我的功能是:
void func( ??? )
{
//write some elements in the array
for(int i=1;i<=sizeof(a);i++) a[i]=i;
}
我如何声明func
?
答案 0 :(得分:3)
如果将sizeof(a)
传递给您的函数,那么主要缺陷是int * a;
没有做您认为的操作。它只是在编译时计算指针变量本身的大小。使用new int[1000];
并且大小为1000
的指针没有保留指针的信息。
您需要使用其他参数显式传递数组大小,或者更好地使用std::vector<int> a(1000);
。
答案 1 :(得分:1)
你不能只是通过a
,
它应该是,
func(a,1000);
你的功能将是,
void func(???) - &gt; `void func(int * a,size_t size)
答案 2 :(得分:1)
这个想法是接受一定大小的整数数组。
void func(int (&arr)[1000]) {
// insert logic here
}
上述内容只接受 1000 的 int
数组 - 不多也不少。
但是你没有传递数组。你正在传递一个指针,所以你需要传递大小:
void func(int *arr, size_t n) {
// insert logic here
}