飞驰吧!少年 发表于 2014-3-25 21:46:57

void函数问题

#include < stdio.h >

void main( )
{
        void chang(int a[], int n);
        int a ={1, 2, 3, 4, 5};
        int i;

        for(i = 0; i < 5; i++)
        {
                printf("%d,", a);
        }
        printf("\n");
        chang(a, 5);

        for(i = 0; i < 5; i++)
        {
                printf("%d\n", a);
        }
        printf("\n");
}

void chang(int a[], int n)
{
        int m, t, i;
        m = (n - 1) / 2;

        for(i = 0; i < m; i++)
        {
                t = a;
                a = a;
                a = t;
        }
}
明明是void,为什么会把a数组的值返回到main函数中呀????

谓我心忧 发表于 2014-3-25 22:31:42

为了方便定位,重新整理一下代码


#include < stdio.h >

void main( )
{
    void chang(int a[], int n);
    int a ={1, 2, 3, 4, 5};
    int i;
   
    for(i = 0; i < 5; i++)
    {
      printf("%d,", a);
    }
    printf("\n");
    chang(a, 5);
   
    for(i = 0; i < 5; i++)
    {
      printf("%d\n", a);
    }
    printf("\n");
}

void chang(int a[], int n)
{
    int m, t, i;
    m = (n - 1) / 2;
   
    for(i = 0; i < m; i++)
    {
      t = a;
      a = a;
      a = t;
    }
}
a是一个数组,你的第一个for函数就输出错了,他只能输出5次a的首地址,i在这里没有任何意义.
你的思路大概是把a改成a,改了之后输出1, 2, 3, 4, 5.事实上还是有错误的.void chang(int a[], int n),这个函数中不是指针,却直接把一个地址赋给了它.程序好多错误的说...

飞驰吧!少年 发表于 2014-3-25 23:01:45

谓我心忧 发表于 2014-3-25 22:31 static/image/common/back.gif
为了方便定位,重新整理一下代码

a是一个数组,你的第一个for函数就输出错了,他只能输出5次a的首地址,i在这 ...

我知道了,是后面的函数改变了a指针地址,所以即使是空函数也照样能达到效果,没你说的那么纠结。

万千不待 发表于 2014-3-26 19:53:32

指针的话用函数也可以改变的啊

青玄 发表于 2014-3-27 10:17:30

啥话不说,先顶一下先!{:2_25:}

水墨君 发表于 2014-3-27 11:49:30

对指针的操作就是对内存的操作

飞驰吧!少年 发表于 2014-3-27 20:41:05

水墨君 发表于 2014-3-27 11:49 static/image/common/back.gif
对指针的操作就是对内存的操作

恩,谢谢点播

阔怀 发表于 2015-8-7 15:43:28

{:1_1:}

阔怀 发表于 2015-8-18 09:48:58

{:1_1:}

飞驰吧!少年 发表于 2016-5-20 00:33:50

好久没上了
页: [1]
查看完整版本: void函数问题