【问题标题】:sort using struct and pointers使用结构和指针排序
【发布时间】:2014-11-14 17:13:04
【问题描述】:

我是结构和指针的新手。尝试学习它们。尝试了一个带有结构和指针的简单排序功能,但遇到了一些问题。谁能帮我理解它们?

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

【问题讨论】:

  • 错字? int *result_; --> int *result_4;
  • 这个错误在 C 编译器中看起来很奇怪,但如果你将这个 (C) 代码编译为 C++ 就会有意义。
  • 修复@BLUEPIXY 指出的错字,并编译为C,一切似乎都很好:ideone.com/yBWcKt
  • 一些编译器如果没有对 Malloc 返回的 void 指针进行显式转换,则会出现错误,您需要从 Malloc 显式转换返回值,sorting_1_org=(int *) malloc
  • @PaulRoub 我投票支持你的 cmets(很久以前)。

标签: c sorting pointers struct


【解决方案1】:

这些程序对我来说似乎很好。除了有一个未声明的变量 第 39 行:

result_4 = sorting(sorting_1_arg);

改正

result_ = sorting(sorting_1_arg);

程序运行良好。只需为新行添加“\n”以使其看起来更好。

here 中的网站很好地介绍了结构和指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2020-09-12
    • 2014-07-04
    相关资源
    最近更新 更多