【发布时间】: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(很久以前)。