2014-11-14 87 views
0

我是结构体和指针的新手。尝试学习它们。用结构和指针做一个简单的排序函数,但有一些问题。有人能帮我理解他们吗?使用结构体和指针进行排序

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

int* 
    sorting (int* arg) 
    { 

    int temp=0,j,i; 
     for(i=1;i<5;i++) 
     { 
      for(j=0;j<5-i;j++) 
      { 
       if(arg[j] >arg[j+1]) 
       { 
        temp=arg[j]; 
        arg[j]=arg[j+1]; 
        arg[j+1]=temp; 
       } 
      } 
     } 
    return arg; 
    } 

int main(){ 

    int i; 
    int n =5; 
    int *result_; 

    int *sorting_1_arg = malloc(n * sizeof *sorting_1_arg); 

    printf("Sort\n "); 
    printf("Enter 5 elements to sort: ");  

    for (i =0; i <n; i++){ 
    scanf("%d", &sorting_1_arg[i]); 
    } 

    result_4 = sorting(sorting_1_arg); 
    printf ("Sorted List recieved from Server "); 

    for (i =0; i <n; i++){ 
    printf("%d",sorting_1_arg[i]); 
    } 
    return 0; 
    } 

当我运行这段代码:

In function 'int main()': 
[Error] invalid conversion from 'void*' to 'int*' [-fpermissive] 
+1

错字? int * result_;' - >'int * result_4;' – BLUEPIXY 2014-11-14 17:19:42

+2

这个错误在C编译器中看起来很奇怪,但是如果你将这个(C)代码编译为C++的话,这将是有意义的。 – 2014-11-14 17:20:39

+0

修复错误@BLUEPIXY注意到,并编译为C,一切似乎都很好:https://ideone.com/yBWcKt – 2014-11-14 17:22:15

回答

0

的程序,似乎没什么问题。除了有上 线39条,未声明的变量:

result_4 = sorting(sorting_1_arg); 

纠正它

result_ = sorting(sorting_1_arg); 

程序运行正常。只需添加一个“\ n”为新线条,使其看起来更好。

该网站here给你一个很好的结构和指针的介绍。