免檒 2023-10-14 16:56 采纳率: 87.5%
浏览 4
已结题

我想知道为什么vs里弄不了啊

关于数组括号里面为什么不能是用户自己输入的数字?我这里有一个代码,在手机上可以实现,但是在电脑vs上不能,一直报错,注意那个2.处

#include <stdio.h> 
#include <stdlib.h>

/**
  用户输入一个数组 
  1、让用户输入数组的长度
  2、根据用户输入的长度创建数组
  3、让用户依次填充数组的值
  4、把值遍历取出打印出来 
*/
main(){
    
    printf("请输入数组的长度:\n"); 
    // 1、用户输入数组的长度
    int length;
    scanf("%d",&length);
    printf("您输入的数组长度为:%d\n",length);
    
    // 2、根据用户输入的长度创建数组
    int iArray[length];
    
    // 3、让用户依次填充数组的值
    int i;
    for(i=0;i<length;i++){
        printf("请输入iArray[%d]的值:\n",i);
        // scanf("%d",&iArray[i]);//(使用这种,或者下面的 scanf("%d",iArray+i); 都是等价的)
        scanf("%d",iArray+i);
    }
    // 4、把数组内容打印出来 
    for(i=0;i<length;i++){
        // printf("iArray[%d]=%d\n",i,iArray[i]); //(使用这种,或者下面的都是等价的)
        // iArray+i:取地址 ,*(iArray+i):取地址的值(使用指针取值) 
        printf("iArray[%d]=%d\n",i,*(iArray+i));
    }
    
    system("pause");
} 


  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-14 18:39
    关注

    【以下回答由 GPT 生成】

    这段代码在Visual Studio中无法编译运行的原因是因为C语言标准中不支持在数组声明时使用变量作为数组的长度。C语言要求在声明数组时,数组的长度必须是一个常量,即在编译时就已知的值。而在这段代码中,用户通过输入的长度来创建数组,这个长度是在运行时才确定的,所以导致编译出错。

    为了解决这个问题,可以使用动态内存分配来创建可变长度的数组。具体使用malloc函数来动态分配数组空间,并使用free函数来释放内存。

    下面是优化后的代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    /**
      用户输入一个数组 
      1、让用户输入数组的长度
      2、根据用户输入的长度创建数组
      3、让用户依次填充数组的值
      4、把值遍历取出打印出来 
    */
    int main() {
    
        printf("请输入数组的长度:\n");
        // 1、用户输入数组的长度
        int length;
        scanf("%d", &length);
        printf("您输入的数组长度为:%d\n", length);
    
        // 2、根据用户输入的长度创建数组
        int* iArray = (int*)malloc(length * sizeof(int));
        if (iArray == NULL) {
            printf("内存分配失败。\n");
            return -1;
        }
    
        // 3、让用户依次填充数组的值
        int i;
        for (i = 0; i < length; i++) {
            printf("请输入iArray[%d]的值:\n", i);
            scanf("%d", &iArray[i]);
        }
        // 4、把数组内容打印出来 
        for (i = 0; i < length; i++) {
            printf("iArray[%d]=%d\n", i, iArray[i]);
        }
    
        free(iArray);
    
        system("pause");
        return 0;
    }
    

    在优化后的代码中,使用了malloc函数动态分配了一个长度为length的整型数组iArray,并在使用完后使用free函数进行了内存的释放。这样就解决了在编译时无法使用变量作为数组长度的问题。

    代码优化后,可以在Visual Studio中正常编译运行。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月23日
  • 已采纳回答 10月15日
  • 创建了问题 10月14日

悬赏问题

  • ¥15 岛津txt格式文件转nirs格式
  • ¥15 石墨烯磁表面等离子体
  • ¥15 angular 项目无法启动
  • ¥15 安装wampserver,图标绿色,但是无法进入软件
  • ¥15 C++ MFC 标准库 加密解密解惑
  • ¥15 两条数据合并成一条数据
  • ¥15 Ubuntu虚拟机设置
  • ¥15 comsol三维模型中磁场为什么没有“速度(洛伦兹项)”这一选项
  • ¥15 electron 如何实现自定义安装界面
  • ¥15 关于#linux#的问题:子进程C运行“ls –l”命令,且显示“C运行ls-l命令”(语言-c语言)