У вас есть несколько проблем с вашим кодом.
Прежде всего, когда вы используете scanf
, вы должны дать ему указатель, а не переменную, поэтому вам нужно добавить '&
' перед вашим именем переменной, поэтому он отправит на нее адрес.
scanf("%d",&s[i]);
Во-вторых, когда вы перебираете свой массив целых чисел, вы используете вложенные циклы, и это здорово, но вы начинаете с сравнение *(s+0)
с *(s+0)
, так как 'i' и 'j' оба инициализируются как нули.
Таким образом, второе исправление будет иметь значение 'j', равное 'i + 1', а не 0 :
int del(int *s, int n)
{
int i = 0,j=0;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(*(s+i)==*(s+j))
{
*(s+j) = 0;
}
}
}
return *s; //(return an integer, not a pointer)
}
Теперь вы всегда будете сравнивать различные размещенные числа из вашего массива.
Третье и последнее: ваша функция 'del' должна возвращать целое число (именно так вы его объявили), но вы возвращаете 's' в конце, и это int * (указатель на целое число). return *s
вместо.