问题描述
我有以下语言版本的程序:
#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];