代码中index=-1是表达什么?

来源:6-6 数组的应用(二)

慕尼黑5432089

2019-02-17 14:05

代码中index=-1是表达什么?
把-1换别的数字也没影响。


写回答 关注

2回答

  • 白腿小隼熊猫鸟
    2019-02-22 14:53:09

    当然可以不写成「return -1;」,这里只是随便选用了「-1」这个数来代表数组中没有找到需要查找的值的情况下,函数getIndex()的返回值。在这种情况下,数组中需要查找的值,也就没有相应的下标(从0开始的正整数),所以就随便选了一个不会和数组下标混淆的整型值来代表数组中不存在查找值的情况。你也可以用「-2」、「-3」等任何一个不会与数组的下标混淆的整型值来表示,然后同时把main()函数中的if()判断的条件也改一下就可以了。

    另外,在C语言中,数组的下标可以是负数,比如a[-1]是指向a[0]的前一个元素,但是问题在于a[-1]到底是什么是无法预知确定的,所以是不建议这么用的,因为C语言不会对数组是否下标越界、溢出等异常进行警告或处理,这样用很可能会影响系统运行,出现不可知的结果。

    所以,只需要记住数组的下标是从0开始的正整数,那么负整数必然就不是数组的下标,所以上面的代码里就可以用任何一个负整数来代表没有合适的数组下标的情况了。

  • AKAkeepreal
    2019-02-17 14:43:28

    前面 

    #include <stdio.h>

    int getIndex(int arr[5],int value)

    {

        int i;

        int index;

        for(i=0;i<5;i++)

        {

           /* 请完善数组查询功能 */

           if(arr[i]==value)

           {

               index=i;

               break;

           }

           else

           {

           index=-1;

           }  

           

           

           

        }

        return index;

    }


    int main()

    {

        int arr[5]={3,12,9,8,6};

        int value = 8;

        int index = getIndex(arr , value);      //这里应该传什么参数呢?

        if(index!=-1)

        {

            printf("%d在数组中存在,下标为:%d\n",value,index);             

        }

        else

        {

            printf("%d在数组中不存在。\n",value);    

        }

        return 0;    

    }

    if里面当找出所要的东西,返回i;要不就返回-1;所以下面就是当返回不是-1.即有返回值时。所以下面等于-1是逻辑正确代码,而不用-1,也是正确的只不过在逻辑上说不通

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926023 学习 · 20793 问题

查看课程

相似问题