如何找出是否使用c中的指针对意甲进行了排序

问题描述

我有以下语言版本的程序:

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

bool is_sorted ( int *array,int num,int prev,int *index);

int main ()
{
    int N;
    int i;
    int prev;
    int data[100];
    bool flag;


    printf("Enter length:\n");
    scanf("%d",&N);
    printf("Enter %d integers:\n",N);
    for (i =0; i<N; i++)
    {
        scanf("%d",&data[i]);
    }
    printf("Enter prevIoUs number:\n");
    scanf("%d",&prev);


    int *index= NULL;

    flag = is_sorted(data,N,prev,index);

    if ( !flag )
    {
        printf("%d ",*index);
    }
}

bool is_sorted ( int *array,int *index) 
{
    if ( prev > array[0] ) 
    {
        index=prev;
        return false;
    }

    for ( int i=0; i<num; i++)
    {
        if ( array[i] > array[i+1] )
        {
            index = array[i];
            return false;
        }
    }
    return true;
}

is_sorted函数一个整数数组和另一个随机整数作为输入,如果prev

我使用指针来查找哪个是破坏意甲联赛订单的第一个元素,但我对指针的语法有点困惑。

运行它,我得到以下结果:

pointers.c:43:14: warning: assignment to ‘int *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
   43 |         index=prev;
      |              ^
pointers.c:51:19: warning: assignment to ‘int *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
   51 |             index = array[i];

解决方法

index是一个指向整数的指针。您需要取消引用指针以将其分配给在调用方中指向的变量。

*index = prev;
...
*index = array[i];