如何使用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 num , int prev , 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<array[0]<array[1]<lt;array[n]。

我使用指针是为了找到破坏序列顺序的第一个元素,但我对指针的语法有点困惑。

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

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];

最新更新