为什么函数里第二行int nums[len];会报错

o18_99_1 2023-05-24 19:06:46
#include<stdio.h>
#include<stdbool.h>

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
    int len = nums1Size + nums2Size;
    int nums[len];
    int i = 0,j = 0,k = 0;
    while(i < nums1Size || j < nums2Size){
        if(nums1[i] < nums2[j]){
            nums[k++] = &nums1[i++];//运行之后k,i+1
            // k++;
        }else{
            nums[k++] = &nums1[j++];//运行之后k,j+1
            // k++;
        }
        if(k <= len/2+1){//到达一半时退出不在写入nums
            break;
        }
    }
    //防止有遗漏
    while(i < nums1Size){
        nums[k++] = nums1[i++];
        // k++;
        if(k <= len/2+1){
            break;
        }
    }
    while(j < nums1Size){
        nums[k++] = nums1[j++];
        // k++;
        if(k <= len/2+1){
            break;
        }
    }
    //判断数组长度奇偶
    double result;
    if(len % 2 == 0){
        result = (nums[len/2-1] + nums[len/2])/2.0;
    }
    else
    {
        result = nums[k];
    }
    printf("%.2f",result);
    
    return result;
}
int main(int argc, char const *argv[])
{
    int nums1[] = {1,2},nums2[] = {3};
    int size1 = sizeof(nums1)/sizeof(int);
    int size2 = sizeof(nums2)/sizeof(int);
    findMedianSortedArrays(nums1,size1,nums2,size2);
    return 0;
}

 

...全文
140 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-05-24
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7950847, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
今天没空哦 2023-05-30
  • 打赏
  • 举报
回复

数组的大小使用变量len来指定,而len的值是在运行时计算得到的,编译器无法确定数组大小,所以会报错。

赵4老师 2023-05-25
  • 打赏
  • 举报
回复
int *nums=new int[len];
delete [] nums;//nums用完后

o18_99_1 2023-05-25
  • 举报
回复
@赵4老师 感谢
weixin_47033079 2023-05-24
  • 打赏
  • 举报
回复

len是变量

o18_99_1 2023-05-24
  • 举报
回复
@weixin_47033079 哦哦,我知道了,不能在运行时才知道数组的大小,我以为java
forever74 2023-05-24
  • 打赏
  • 举报
回复

你的编译器应该已经告诉你了,它不支持动态大小的数组。

o18_99_1 2023-05-24
  • 举报
回复
@forever74 啊?len不是定义的吗
o18_99_1 2023-05-24
  • 举报
回复
@o18_99_1 我在vsc调式的时候到这里要点好多次下一步,也可以正常出结果
o18_99_1 2023-05-24
  • 举报
回复
@forever74 抱歉,我知道了,不能在运行时才知道数组的大小,我以为java

69,403

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧