调用函数时,数组怎样才能改变?

新人小白想问下,调用函数时,数组不变的吗?
就比如下面的这个程序,调用函数之后并没有改变数组。所以想问下是哪里出错了?

#include<stdio.h>
void paixu(int a[10]);

void main()
{
    int a[10]={100, 20, 30, 90, 80, 60, 70, 50, 40, 10};
    int max, avg, min;
    void paixu(a);
    for( int i=0;i<=9;i++ )
    {
        printf(" %d ", a[i]);
    }
}

void paixu(int a[10])
{
    int i, k;
    for( i=0;i<=9;i++ )
    {
        for( k=0;k<=9-i;k++)
        {
            if( a[k]<a[k+1] )
            {
                int temp;
                temp   = a[k];
                a[k]   = a[k+1];
                a[k+1] = temp;
            }
        }
    }
}

4个回答

void paixu(a);
这是申明函数,并没有调用

#include<stdio.h>
void paixu(int a[10]);

void main()
{
    int a[10]={100, 20, 30, 90, 80, 60, 70, 50, 40, 10};
    int max, avg, min;
    paixu(a);
    for( int i=0;i<=9;i++ )
    {
        printf(" %d ", a[i]);
    }
}

void paixu(int a[10])
{
    int i, k;
    for( i=0;i<=9;i++ )
    {
        for( k=0;k<=9-i;k++)
        {
            if( a[k]<a[k+1] )
            {
                int temp;
                temp   = a[k];
                a[k]   = a[k+1];
                a[k+1] = temp;
            }
        }
    }
}

结果
100 90 80 70 60 50 40 30 20 10 Press any key to continue . . .

问题解决的话,请点下采纳

将主函数中的void paixu(a)改为paixu(a);
前者表示声明而非调用。

数组是会变得,你再试试。 不然就在数组参数前面加引用。 就是这个符号&,你可以搜搜什么是引用。

方法一:将数组定义到main()外面,定义成全局变量。局部变量是函数里的,当它被当成参数传给其他函数时,只是传了个值,传的值会重新分配一个空间给这个值,在另外的一个地方处理,返回时又释放空间,根本没碰到你定义的那个数组。
方法二:在函数数组参数前加个‘&’,这叫取址符号,就是将参数的地址传过去,而不只是个数值。注意两点:1.别忘了加两个地方;2.这与引用不同,举个例子:int &x = &y; &x是引用,&y是取y的地址。
方法三:你排完序后返回这个数组,像这样:
int main() {
int a[...];
...
a = paixu(a);//a是个数组,paixu()返回一个数组。
...
}
int *paixu(int arr[]) {
...
return arr;
}

还有,代码中“void paixu()”是声明函数,应“paixu()”.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
C++对象数组赋值调用构造函数问题
0
react 调用函数组件内部方法
2
用C语言写了一个输入一个一维数组的函数,如何在函数中调用该数组?
3
返回值是数组,主函数应该如何调用
1
clist调用find函数之后调用removeat函数出错
1
为什么只有在直接打印一次字符串后,控制台才会显示调用函数打印的数组字符串
5
js怎么调用函数中的值
1
Java函数重载问题,编写两个函数,计算圆和长方形面积,构成重载,并且在main函数调用
1
Java语言怎么实现函数对主程序变量的一个调用的方法呢?调用变量和函数的区别
0
matlab工具箱函数调用
3
c语言 调用函数中数组值传递问题
4
创建一个整数数组,内放5个整数。设立一个函数maxAmin,使用数组名作为函数参数,在maxAmin函数中找出数组中的最大值和最小值。
1
c#调用c++的dll文件时,存在调用继承了另一个类的回到函数如何调用?
1
C#调用纯C的DLL时,结构体指针、数组、二维数组 怎么转换?
1
编写求n个数平均值的函数,并调用该函数找出长度为n的数组中小于平均值的元素
3
函数调用那一章中,编写一个函数求N个数的最大值
1
调用子函数时怎样往子函数里赋值?
3
设计一个函数int stoi(char* str),将数字字符串str转换为一个整数。 main读取一个由数字字符构成的字符串放入数组,然后调用stoi函数得到转换后的整数并输出.
1
Java语言判断一个数字是否可同时被 2 3 5整除,定义一个函数并且调用
1
JavaScript设计一个外部调用的函数