【问题标题】:'subscripted value is neither array nor pointer nor vector' error“下标值既不是数组也不是指针也不是向量”错误
【发布时间】:2013-04-11 10:27:51
【问题描述】:

我已阅读过有关类似问题的问题,但 2D动态 数组的问题已在那里得到解决。 (有指针,但我想没有它们。)

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

int interseq ( int, int ); // interval sequence

int main()
{
    int arr[100] = { 75, 47, 64, 45, 67, 51, 55, 36, 63, 30,
                     39, 58, 55, 67, 70, 44, 46, 51, 51, 61,
                     50, 54, 49, 51, 52, 54, 64, 68, 45, 40,
                     48, 60, 55, 37, 36, 13, 62, 53, 37, 53,
                     52, 49, 37, 54, 69, 44, 53, 58, 77, 46,

                     44, 63, 57, 64, 28, 46, 50, 57, 42, 72,
                     12, 69, 52, 53, 77, 50, 45, 49, 49, 46,
                     28, 40, 65, 25, 45, 45, 62, 28, 39, 69,
                     52, 57, 39, 73, 37, 46, 38, 65, 49, 58,
                     63, 30, 51, 48, 47, 56, 48, 41, 30, 54 };

    printf("%d", interseq ( arr, diagArr) );

    return 0;
} 

/* User's function. Description: 'farr' is 'arr' and so on..  */
int interseq ( int farr, int fdiagArr)
{
   int min, i;

   for ( i = 0; i < 100; i++ )    // Finding the 'min' element.
      if ( farr[i+1] < farr[i] )  // there are 2 errors 
          min = farr[i];          // there is 1 error 
      else
          min = farr[i+1];        // there is 1 error 

return 1;
}

错误是一样的:

error: subscripted value is neither array nor pointer nor vector

【问题讨论】:

  • 你应该展示实际的代码。变量 fdiagArr 未定义,这是要查看的第一个错误。

标签: c


【解决方案1】:

把它们变成指针:

int interseq(int *farr, int *fdiagArr)
                 ^          ^

我在你的代码中看不到 diagArr 是什么,所以这部分是猜测。


作为cmets中的simonc点,当i = 99farr[i+1]将是非法的。你应该早点停下来或者改变你的算法。

【讨论】:

  • +1。还应该在i&lt;99 上退出interseq 中的循环,以避免读取超出数组末尾。
  • 这对我有帮助。但是有warning: variable 'min' set but not used。它正在被使用! (min = ...) 为什么?
  • @Genuine.Zealot 您分配给它,但不要对它做任何事情(其他)。
  • @duDE 不,不是。实际上标准 C 库甚至没有提供min 函数。
  • @Genuine.Zealot 在这种情况下,它们完全相同。但仅在这种情况下。在这种情况下,int farr[1000]完全等同于int *farrint farr[]
【解决方案2】:

试试这个:

//int interseq ( int farr, int fdiagArr)
int interseq ( int farr[], int fdiagArr[])

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多