|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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[num],i;
- for(i=0;i<num-1;i++)
- if(array[i]!=0)
- {
- arrayA[count]=array[i];
- count++;
- }
- int arrayB[count];
- for(i=0;i<=count-1;i++)
- arrayB[i]=arrayA[i];
- 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[i]>array[j])
- {
- int temp=array[i];
- array[i]=array[j];
- array[j]=temp;
- }
- return array;
复制代码
本帖最后由 就是要努力呀 于 2020-3-15 18:15 编辑
arrayB是一个左值,左值是不可更改的,你想要保留在sort函数内对arrayB的改动,应该传入arrayB的指针
- void sort(int **array);
- sort(&arrayB);
复制代码
或者用一个新的指针去保存sort函数的返回值
- int *parrayB;
- parrayB = sort(arrayB);
复制代码
|
|