ошибка периода выполнения в коде

у меня есть следующий код

#include <stdlib.h>
#include <stdio.h>
int sorter( const void *first_arg,const void* second_arg){
    int first=*(int *) first;
    int second =*(int*) second;
     if (first<second){
          return -1;
             }

     else if ( first==second){

          return 0;
             }
     else{

          return 1;
     }


}
int main(){
    int arr[10];
     int i;
     /*
     fill the array
     */
     int t=sizeof(arr)/sizeof(arr[0]);
      for (i=0;i<t;i++){
          arr[i]=t-i;
}
       qsort(arr,t,sizeof(int),sorter);
        for (int i=0;i<t;i++){
             printf("%d\n",arr[i]);


        }


}

но вот ошибки периода выполнения согласно отлаживанию, я получил следующее

first   -858993460  int


first_arg   0x0015f738  const void *



second  -858993460  int


    second_arg  0x0015f74c  const void *

также

>   sorter_include.exe!sorter(const void * first_arg, const void * second_arg)  Line 4 + 0x20 bytes C++
msvcr100d.dll!qsort(void * base, unsigned int num, unsigned int width, int (const void *, const void *)* comp)  Line 151 + 0xb bytes    C
sorter_include.exe!main()  Line 31 + 0x17 bytes C++
sorter_include.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes   C
sorter_include.exe!mainCRTStartup()  Line 371   C
kernel32.dll!77911174()     
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]  
ntdll.dll!779fb3f5()    
ntdll.dll!779fb3c8()    

помогите

0
задан stijn 1 August 2010 в 09:26
поделиться

3 ответа

int sorter( const void *first_arg,const void* second_arg){
    int first=*(int *) first_arg;
    int second =*(int*) second_arg;
     if (first<second){
          return -1;
             }

* первый или * второй - бессмысленная опечатка - вам нужно использовать аргументы.

2
ответ дан 4 September 2019 в 00:47
поделиться
int first=*(int *) first;
int second =*(int*) second;

Думаю, вы имели в виду

int first=*(int *) first_arg;
int second =*(int*) second_arg;
1
ответ дан 4 September 2019 в 00:47
поделиться

Это одна из тех проблем, которые упускают из виду проблемы с именами переменных.

Вам необходимо изменить:

int first=*(int *) first;
int second =*(int*) second;

на

int first=*(int *) first_arg;
int second =*(int*) second_arg;

В начале функции сортировщика.

3
ответ дан 4 September 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: