a1557944 发表于 2020-3-15 17:12:22

代码问题求助

本帖最后由 a1557944 于 2020-3-15 20:06 编辑

#include <stdio.h>
int* filter(int[],int);
int* sort(int[]);
int count=0;
int main()
{
int num=12,array[]={23,45,65,0,9,25,0,34,0,56,44},i;
int *p=filter(array,num);
printf("new array:");
for(i=0;i<num;i++)
printf("%d\t",*(p+i));
}
int* filter(int array[],int num)
{
int arrayA,i;
for(i=0;i<num-1;i++)
if(array!=0)
{
arrayA=array;
count++;
}
int arrayB;
for(i=0;i<=count-1;i++)
arrayB=arrayA;
int *s=sort(arrayB);
return s;
}
int* sort(int array[])
{
int i,j;
for(i=0;i<=count-2;i++)
for(j=i+1;j<=count-1;j++)
if(array>array)
{
int temp=array;
array=array;
array=temp;
}
return array;

qiuyouzhi 发表于 2020-3-15 17:14:26

能描述清晰一点吗?
没有太听懂

qiuyouzhi 发表于 2020-3-15 17:17:25

能描述清晰一点吗?
没有太听懂

sunrise085 发表于 2020-3-15 17:23:55

不是不能传递。是返回值赋值出错了。
sort()函数的返回值为int*,你将int类型的指针赋值给了数组。所以出错了。

另外,还有一处错误,arrayB是函数filter的内部变量,好像不能作为返回值吧。

bigbird0419 发表于 2020-3-15 17:25:43

sort不是系统内置函数吗

a1557944 发表于 2020-3-15 17:30:58

sunrise085 发表于 2020-3-15 17:23
不是不能传递。是返回值赋值出错了。
sort()函数的返回值为int*,你将int类型的指针赋值给了数组。所以出 ...

int*和int型的指针有什么区别?

sunrise085 发表于 2020-3-15 17:35:48

a1557944 发表于 2020-3-15 17:30
int*和int型的指针有什么区别?

int*就是int型的指针,但是数组不是指针啊。
arrayB=sort(arrayB),赋值语句左侧是int型数组,右侧是int型指针

a1557944 发表于 2020-3-15 17:36:18

qiuyouzhi 发表于 2020-3-15 17:17
能描述清晰一点吗?
没有太听懂

把一个数组中所有的0去掉生成新的数组并排序

就是要努力呀 发表于 2020-3-15 18:13:54

本帖最后由 就是要努力呀 于 2020-3-15 18:15 编辑

arrayB是一个左值,左值是不可更改的,你想要保留在sort函数内对arrayB的改动,应该传入arrayB的指针
void sort(int **array);
sort(&arrayB);
或者用一个新的指针去保存sort函数的返回值
int *parrayB;
parrayB = sort(arrayB);
页: [1]
查看完整版本: 代码问题求助