我的一个函数以int *
作为参数,但我是int[]
,我该如何将参数传递给它?
我使用这种方法,但我觉得效率不高:
void myFunc(int * ar);
...
int main(){
int ar[]={1,2,3,4,5};
int *ar2=new int [5];
memcpy(ar2,ar,5*sizeof(int));
myFunc(ar2);
}
传递数组本身会导致编译错误。
答案 0 :(得分:3)
您可以直接将int []作为int *参数传递。数组可以衰减为指针。
此代码将编译:
void myFunc(int * ar);
...
int main(){
int ar[]={1,2,3,4,5};
myFunc(ar);
}
答案 1 :(得分:1)
你可以通过参数int[]
传递int *
,但函数不能知道数组的长度。所以你应该再添加一个参数给函数,例如:{{1} }
答案 2 :(得分:0)
可以将数组转换为指针,以便您可以像这样传递参数:
myFunc的(AR2);
因为ar2是一个数组,我们可以传递数组因为myFunc中的参数 指向一个int的指针,即ar2
继承人如何运作
#include <iostream>
#include <string.h>
using namespace std;
void myFunc(int *ar)
{
for (int i = 0; i != 5; ++i)
std::cout << *(ar + i ) << std::endl;
}
int main()
{
int ar[]={1,2,3,4,5};
int *ar2=new int [5];
memcpy(ar2,ar,5*sizeof(int));
myFunc(ar2);
delete ar2; /// dont forget to de allocate :)
return 0;
}
输出
1
2
3
4
5
答案 3 :(得分:0)
你可以通过传递数组的名称,即ar。
来做到这一点数组的名称实际上是数组的第一个元素的地址,因此在一个带有
int *ar
类型参数的函数中传递它就是这样做的方法!
myFun(ar)
可以正常工作;