int main(){
int V[]= {10,3,4,5,4};
int P[] = {24,2,9,10,9};
int len = sizeof(V)/sizeof(V[0]);
printf("%d\n",len);
Knapsack01(V,P,13);
}
int Knapsack01(int V[], int P[],int c){
int len2 = sizeof(V)/sizeof(V[0]);
printf("%d\n",len2);
for(int i=0; i<5; i++)
printf("%d\n",V[i]);
为什么V[]数组传参过去后,len会变少啊,但是printf出来的V数组仍然是原来的数组,求解答!
主函数可以获知数组的长度,但是传入之后v变为单纯的指针,函数无法获取其长度
在主函数中可以正确计算数组的长度
但是传入函数后,该算是计算的是指针长度和int长度的倍数关系
,因为64位下指针长度为8字节,int为4字节,所以输出为2有帮助望采纳~
把函数参数定义成 int V[5], int P[5],即可
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!