【问题标题】:can we declare a variable inside an array我们可以在数组中声明一个变量吗
【发布时间】:2022-01-09 22:19:28
【问题描述】:
#include <stdio.h>

int main () 
{
    int size,i;
    int arr[size];

    printf ("Enter size of array\n");
    scanf ("%d",arr[size]);

    for (i=0; i<=size; i++)
    {
        printf ("%d", arr[size]);
    }

    return 0;
}

【问题讨论】:

  • 您无法以这种方式创建在运行时确定的大小数组。 size 必须是文字 - 而不是用户输入的变量。
  • size 的大小未知,您必须在使用前分配值来定义array 的大小。
  • @kenticent: C 支持 VLA 的
  • @TruthSeeker 哪个标准?
  • 使用 VLA 是(恕我直言)此代码中存在的最少问题。

标签: c for-loop scanf declaration variable-length-array


【解决方案1】:

我没有理解这个问题,但您的代码无效。

在声明可变长度数组arr 之前,变量size 必须已经有一个正值。所以你至少需要写像

int size,i ;

printf ("Enter size of array\n") ; 
scanf ("%d", &size) ;

int arr[size] ;

scanf的这个调用

scanf ("%d",arr[size]);

没有任何意义,尤其是因为调用的第二个参数必须是指针。

另外,for 循环中的条件必须是这样的

for (i=0; i <size; i++) {
          ^^^^^^^

而你正试图输出一个不存在的数组元素

printf ("%d", arr[size]);

这个可变长度数组的有效索引范围是[0, size)

看来你的意思

printf ("%d ", arr[i]);

但在输出数组的元素之前,您需要为它们分配值,因为数组未初始化,并且您可能不会在声明时初始化可变长度数组。

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多