Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程中的数组大小分配错误?_C_Arrays_Sorting_Sum - Fatal编程技术网

C编程中的数组大小分配错误?

C编程中的数组大小分配错误?,c,arrays,sorting,sum,C,Arrays,Sorting,Sum,在提到的代码中,由于数组大小分配给新变量,错误是在运行时发生的 C语言 { scanf("%d",&n);//size of array int arr[n]; for(i=0;i<n;i++) scanf("%d",&arr[i]); scanf("%d",&givensum); int i=0; int j=n-1; // RUN TIME ERROR ? WHY for j=n is No ERROR while(i<h) {

在提到的代码中,由于数组大小分配给新变量,错误是在运行时发生的

C语言

{ scanf("%d",&n);//size of array
int arr[n];
for(i=0;i<n;i++)
    scanf("%d",&arr[i]);
 scanf("%d",&givensum);
int i=0;
int j=n-1; // RUN TIME ERROR ? WHY for j=n is No ERROR
 while(i<h)
 {

     if((arr[i]+arr[j]) == givensum){
        printf("%d %d %d\n",arr[i],arr[j],givensum);
        c++;
     }
     if((arr[i]+arr[j]) > givensum)
     {
       j--;
        c++;
     }
      if((arr[i]+arr[j]) < givensum)
      {
          i++;
          c++;
      }
      if(c == 0)
      printf("-1");
 }
cases--;
}
return 0;
{scanf(“%d”,&n);//数组大小
int-arr[n];

对于(i=0;i您无法在C中动态分配数组大小。请通过正确初始化大小来获取具有所需大小的数组

例如,我将在程序中的任何时候使用最多10个数字,然后我应按如下方式初始化数组:

int a[10];

“C”不提供任何数组边界检查。如果为大小为7的数组写入arr[7],则会损坏内存。不会出现运行时错误。它可能会导致崩溃,更改其他无关变量的值,但不会出现预期的运行时错误

因此,您自己需要确保不在数组边界之外写入(或读取相同内容)。不确定为什么要谈论
j
,它在代码片段的其他任何地方都没有使用。我只看到
I
h
,后者甚至没有声明

您必须确保
i
h
都不会大于
n-1
(或小于0)


顺便说一句,
j=n-1
只是一个简单的赋值,与数组大小无关。

什么类型的
j
?您得到的确切错误是什么?此代码不完整,缺少许多定义。我在Geeksforgeks Portal上练习时出现运行时错误,即由于数组大小“n”而导致的分段错误变量“int j”的赋值请一致地缩进您的代码。我已经提供了代码的链接,请通过它提供帮助您也应该在这里提供完整的代码-尝试了链接中的代码,遇到了一个行为未定义的循环(
c
变量递增,直到有符号整数溢出)。您应该提供导致崩溃的具体输入(或者更好:用具体值的赋值替换
scanf
调用)顺便说一下:你从来没有检查过这些调用的结果。<代码> SCANF函数族返回成功扫描的变量的数量。你考虑过了吗?那么我们怎么才能做到这一点?请帮助大多数C实现不支持。VLA@Varun如果不支持VLA,那么您已经得到一个编译错误-这里显然不是这样,所以VLA是由使用中的编译器支持的。对不起,代码,我和j只使用整个代码,我想读取数组大小n,并将n size赋给另一个名为j的变量,所以对j值的任何更改都不会反映原始大小n的更改,因为我后来使用了程序,数组大小的值发生了更改,所以我不知道'我不想更改数组的大小,因此我将数组大小分配给名为j的变量,vaiable将在代码中使用,而不影响原始变量n