Sherlockkkkz 2022-03-04 19:45 采纳率: 100%
浏览 26
已结题

C语言!!为什么传参数过去会变!求解答!

问题遇到的现象和发生背景
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]); 

img

为什么V[]数组传参过去后,len会变少啊,但是printf出来的V数组仍然是原来的数组,求解答!

  • 写回答

3条回答 默认 最新

  • 关注

    主函数可以获知数组的长度,但是传入之后v变为单纯的指针,函数无法获取其长度
    在主函数中可以正确计算数组的长度
    但是传入函数后,该算是计算的是指针长度和int长度的倍数关系,因为64位下指针长度为8字节,int为4字节,所以输出为2
    有帮助望采纳~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 创建了问题 3月4日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法